2017-09-26 20 views
3

プロジェクトをasp net coreに移行していますが、これらのルートを構成できませんでした。属性を使用してアクションをマップしています。ASP.NETコア属性ルーティング

コードASP.Net WebAPI2ため

[Route("api/[controller]")] 
public class SalesController : Controller 
{ 
    // api/sales/1 -> ok 
    [HttpGet] 
    public HttpResponseMessage Get(int id) 
    { 
     // Logic 
    } 

    // api/sales -> ok 
    [HttpGet] 
    public HttpResponseMessage Get([FromUri] PaginationHelper pagination) 
    { 
     // Logic 
    } 

    // api/sales?me -> ok 
    [ActionName("Get")] 
    public HttpResponseMessage GetMe(bool? me) 
    { 
     // Logic 
    } 
} 

ASP.Netコア

のコードファイルでStartup.csapp.UseMvc(設定されています)。

[Route("api/[controller]")] 
public class SalesController : Controller 
{ 
    // api/sales/1 -> ok 
    [HttpGet("{id}")] 
    public IActionResult Get(int id) 
    { 
     // Logic 
    } 

    // api/sales -> don't work 
    [HttpGet] // -> ??? 
    public IActionResult Get(PaginationHelper pagination) 
    { 
     // Logic 
    } 

    // api/sales?me -> don't work 
    [HttpGet] // -> ??? 
    public IActionResult GetMe(bool? me) 
    { 
     // Logic 
    } 
} 
+0

私はわからないんだけど..しかし、私はおそらく、既存のものを先行する必要がありますが、そのいずれかのルートを追加するか、またはあなたがそれにルート属性を追加することができると思いますメソッドを特定のルートで実行します。 ルートルールは宣言されても問題ありません。最初に他のキャッチが最初に届かない場合は... – rmjoia

+1

これは機能しますか? // get api/values [HttpGet] public IActionResult Get() { 戻り値(新しい文字列[] {"value1"、 "value3"}); } –

答えて

1

新しいフレームワークは、エンドポイントの意図をより明確に指示を期待します。

[Route("api/[controller]")] 
public class SalesController : Controller { 

    [HttpGet("{id:int}")] // GET api/sales/1 
    public IActionResult Get(int id) { 
     // Logic 
    } 

    [HttpGet] // GET api/sales?page=1 assuming PaginationHelper has page property 
    public IActionResult Get([FromQuery]PaginationHelper pagination) { 
     // Logic 
    } 

    [HttpGet] // GET api/sales?me=true 
    public IActionResult GetMe(bool? me = false) { 
     // Logic 
    } 
} 

リファレンスAsp.Net Core: Model Binding

+0

パラメータ[me]はフィルタになりますが、デフォルトではfalseですが、sales?me = trueと入力するとこの問題は解決しません。 –

+0

@WillianTeleginskiはい、更新を確認してください。 – Nkosi

+0

動作しません。 エラーメッセージ: 要求の処理中に未処理の例外が発生しました。 AmbiguousActionException:複数のアクションが一致しました。次のアクションのルートデータを一致し、すべての制約が満たされていた:方法 公共IActionResultと 紛争([FromQuery] PaginationHelperページ)を取得し と 公共IActionResult GetMe(私をBOOL) –

関連する問題