1

ASP.NET Core WEB API の実験を開始しました。パラメーターの数が異なる複数の取得要求を支援するコントローラーを作成しているときに、以下のエラーが発生します。

Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException: 要求が複数のエンドポイントに一致しました。一致:

PaperRocket.Controllers.Products.ProductsController.GetProducts (PaperRocket) PaperRocket.Controllers.Products.ProductsController.GetProduct (PaperRocket) Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ReportAmbiguity(CandidateState[] CandidateState) at Microsoft.AspNetCore.Routing.Matching Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.Select(HttpContext httpContext、CandidateState[] CandidateState) で Microsoft.AspNetCore.Routing.Matching.DfaMatcher.MatchAsync(HttpContext httpContext) Microsoft.AspNetCore.Routing.Matching.DataSourceDependentMatcher.MatchAsync (HttpContext httpContext) で、Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware で。Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext コンテキスト) で Invoke(HttpContext httpContext)

HEADERS ======= Accept: / Accept-Encoding: gzip, deflate, br Cache-Control: no-cache Connection: keep-alive Host: localhost:54967 User-Agent: PostmanRuntime/7.24.1 Postman-Token: 0f3ce4b4-283a-472b-9350-7b0cc02d31ae

それで、私の質問は、複数の get メソッドを使用できるかということです

  1. パラメータ数の違い(WEB-APIで可能)
  2. HTTPGET("RouteConstraint") を使用せずに-(これで動作することはわかっています)
  3. それぞれのメソッドが呼び出され、渡したパラメーターによって識別される必要があります

以下は私のコードです:

    [HttpGet]
    public IEnumerable<Product> GetProducts()
    {
        return _Productcontext.GetProducts();
    }

    [HttpGet]
    public Product GetProduct([FromQuery(Name = "ProductCode")]string ProductCode)
    {
        return _Productcontext.GetProductByProductCode(ProductCode);
    }

最後に、asp.net コア記事の最適なモデル バインディング、ルーティング、および ASP.NET WEB-API との違いを教えてください。

4

1 に答える 1