【发布时间】:2020-10-05 13:51:14
【问题描述】:
我在 .NET Core 项目中使用 OpenAPI (Swagger),当使用具有相似获取请求的多个方法时,我遇到“Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException:请求匹配多个端点。”运行时出错。我查看了网络和 SO 上的几个页面,并尝试应用The request matched multiple endpoints but why? 之类的解决方法,但它不能解决问题。以下是我使用的 API 方法和路由定义。
[Route("get", Name="get")]
public IEnumerable<DemoDto> Get()
{
//
}
[Route("get/{id}", Name="getById")]
public DemoDto GetById(int id)
{
//
}
[Route("get/{query}", Name="getWithPagination")]
public IEnumerable<DemoDto> GetWithPagination(DemoQuery query)
{
//
}
我使用Name 属性来解决问题但没有解决。有什么想法可以更改路线以区分Get() 和GetWithPagination()?
【问题讨论】:
-
@PavelAnikhouski 您问这些问题是为了了解问题并提供帮助吗?
-
我可以用
[HttpGet]代替[Route("get/{query}", Name="getWithPagination")]吗? -
@Jack,在 ASP.NET Core 中,我们使用HttpGetAttribute 来定义来自方法的路由。
-
@Vernou 那你建议使用
[HttpGet("get/{query}", Name="getWithPagination")]?
标签: c# api rest .net-core webapi