ASP.NET核心WebApi:不明确的匹配异常:请求与多个终结点匹配



我在一个标准的.NET Core WebApi项目中有这个控制器代码:

[ApiController]
[Route("[controller]")]
public class MessageController : ControllerBase
{
[HttpGet]
public string GetByTransactionId([FromRoute(Name = "transactionId")] string transactionId)
{
return "transactionId";
}
[HttpGet]
public string GetByNumber([FromRoute(Name = "number")] string number)
{
return "number";
}
}

我想访问这样的api:

  • https://localhost:44316/Message?transactionId=abc
  • https://localhost:44316/Message?number=foobar

访问端点url时,如:https://localhost:44316/Message?transactionId=abc,我得到的错误如下:

AmbiguousMatchException: The request matched multiple endpoints. Matches:
Server.Controllers.MessageController.GetByTransactionId (Server)
Server.Controllers.MessageController.GetByNumber (Server)

这可以通过使用正确的[HttpGet][Route]属性来解决吗?

[ApiController]
[Route("[Message]")]
public class MessageController : ControllerBase
{
[HttpGet]
[Route("transactionId")]
public string GetByTransactionId([FromRoute(Name = "transactionId")] string transactionId)
{
return "transactionId";
}

[HttpGet]
[Route("number")]
public string GetByNumber([FromRoute(Name = "number")] string number)
{
return "number";
}
}

尝试使用Route-属性。这将解决你的问题

最新更新