【发布时间】:2020-10-13 11:23:05
【问题描述】:
我正在将控制器从 .NET Framework 迁移到 .NET Core,并且我希望与以前版本的 API 调用兼容。我在处理来自查询参数的多个路由时遇到问题。
我的示例控制器:
[Route("/api/[controller]")]
[Route("/api/[controller]/[action]")]
public class StaticFileController : ControllerBase
{
[HttpGet("{name}")]
public HttpResponseMessage GetByName(string name)
{
}
[HttpGet]
public IActionResult Get()
{
}
}
调用api/StaticFile?name=someFunnyName 将引导我执行Get() 操作而不是预期 GetByName(string name)。
我想要达到的目标:
- 调用 GET
api/StaticFile-> 转到Get()操作 - 调用 GET
api/StaticFile?name=someFunnyName-> 转到GetByName()操作
我的app.UseEndpoints() 来自Startup.cs 只有这些行:
endpoints.MapControllers();
endpoints.MapDefaultControllerRoute();
如果我在任何地方都使用[HttpGet] 并添加([FromQuery] string name) 它会得到我AmbiguousMatchException: The request matched multiple endpoints
感谢您抽出时间帮助我(也许还有其他人)
【问题讨论】:
标签: c# asp.net .net asp.net-core asp.net-core-webapi