質問

私はWebAPI2と遊んで、奇数の問題に出会いました。

ihttpactionResult

を使用するようにデフォルト値を更新しました。

のように

    public class ValuesController : ApiController
{
    // GET api/values
    [HttpGet]
    public IHttpActionResult Get()
    {
        return Ok(new string[] { "value1", "value2" });
    }

    // GET api/values/get2
    [HttpGet]
    public IHttpActionResult Get2()
    {
        return Ok(new string[] { "value1", "value2" });
    }
.

Postman内でget()を試してみたとき、私はエラーを取得します

{ 「メッセージ」:「エラーが発生しました」 "ExceptionMessage": "要求:\ r \ nsystem.web.http.ihttpactionResult get()webApplication1.Controllers.ValuesController \ R \ NSystem.Web.http.ihttpactionResult get2()on typactionResult get2()にある複数のアクションが見つかりました.controllers.valuesController "、 "exceptionType": "System.InvalidOperationException"、 System.Web.Http.Controllers.apicontrollerActionSelector.ActionAction(HTTPControlRercontext ControllerContext)\ R \ Nの "System.Web.http.Controllers.apicontrollerContext ControllerContext)\ r \ nシステムのselectaction(HTTPControlRercontext ControllerConterext)\ R \ n。 web.http.apicontroller.executeasync(HTTPControllerContext ControllerContext、CancellationToken CancellationToken)\ R \ N at system.web.http.dispatcherの\ r \ nで\ r \nr \ n。 HttpControlLerDispatcher.d__0.movenext()」 }

それぞれが機能するためにそれぞれのために手動でルートを作成する必要がありますか?

何かとてもシンプルなもの、まだ頭痛を引き起こします!

役に立ちましたか?

解決

あなたはあなたがパラメータを取らずに2つの取得要求を持っているので、WebAPIには2つの間の区別を区別していません。1つの方法は、あなたが言うように各方法に対してさまざまなルートを設定することです。これを回避する最も簡単な方法は、属性ルーティングライブラリを使用して、コントローラで異なるルートを定義することができます。アクションレベルは本当にこのようなものです。

[RoutePrefix("api/values")]
public class ValuesController : ApiController
{   
    [GET("Get")]
    public IHttpActionResult Get()
    {
        return Ok(new string[] { "value1", "value2" });
    }

    [GET("Get2")]
    public IHttpActionResult Get2()
    {
        return Ok(new string[] { "value1", "value2" });
    }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top