我正在将控制器从 .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()的 fromStartup.cs只有这些行:
endpoints.MapControllers();
endpoints.MapDefaultControllerRoute();
如果我[HttpGet]到处使用并添加([FromQuery] string name)它会让我AmbiguousMatchException: The request matched multiple endpoints
感谢您花时间帮助我(也许还有其他人)
