簡體   English   中英

該請求與 ASP.Net Core OData 中的多個端點匹配

[英]The request matched multiple endpoints in ASP.Net Core OData

我做了我的第一個 OData-Request 工作:

[HttpGet]
[EnableQuery]
public IQueryable<ApplicationUser> Get()
{
    return _applicationUserRepository.GetAll();
}

現在我想為 Get(id) 添加第二個:

[HttpGet]
[EnableQuery]
public ApplicationUser Get([FromODataUri]long id)
{
    return _applicationUserRepository.Get(id).Result;
}

現在的問題是,當我嘗試使用 postman 執行第一次調用時,結果是: GET http://localhost:5000/api/v1/applicationuser?$filter=startsWith(LastName,%20%27Test%27)

Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException:請求匹配多個端點。 火柴:

  • MyAssambly.Controllers.ApplicationUserController.Get (MyAssambly)
  • MyAssambly.Controllers.ApplicationUserController.Get (MyAssambly)

在 Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ReportAmbiguity(CandidateState[] CandidateState) 在 Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ProcessFinalCandidates(HttpContext httpContext, CandidateState[] CandidateState) 在 Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector。 Select(HttpContext httpContext, CandidateState[] CandidateState) 在 Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.SelectAsync(HttpContext httpContext, CandidateSet CandidateSet) 在 Microsoft.AspNetCore.Routing.Matching.DfaMatcher.SelectEndpointWithPoliciesAsync(HttpContext httpContext, IEndpointSelectorPolicy[] 策略, CandidateSet CandidateSet) at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.g__AwaitMatch|8_1(EndpointRoutingMiddleware middleware, HttpContext httpContext, Task matchTask) at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.DeveloperExcepti onPageMiddleware.Invoke(HttpContext 上下文)

所以我不知道問題可能是什么。 方法是不同的,第二個應該明確地用 ID 參數調用它。 我究竟做錯了什么?

問題是,我們需要使用ORouteData之類的東西。 但是在 8.0.0-rc 版本中,這個屬性消失了。

文檔說,我們需要使用 Http 動詞屬性:

[EnableQuery]
[HttpGet("ApplicationUser")]
[HttpGet("ApplicationUser/$count")]
public IQueryable<ApplicationUser> Get()
{
    return _applicationUserRepository.GetAll();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM