ASP. NET Core WebApi: AmbiguousMatchException: запрос соответствует нескольким конечным точкам - PullRequest
0 голосов
/ 04 августа 2020

У меня есть этот код контроллера в стандарте. NET Основной проект 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 / Сообщение? TransactionId = ab c
  • https://localhost: 44316 / Сообщение? Number = foobar

При доступе к URL-адресу конечной точки, например: https://localhost: 44316 / Сообщение? TransactionId = ab c, я получаю сообщение об ошибке:

AmbiguousMatchException: The request matched multiple endpoints. Matches:

Server.Controllers.MessageController.GetByTransactionId (Server)
Server.Controllers.MessageController.GetByNumber (Server)

Можно ли решить эту проблему, используя правильные атрибуты с [HttpGet] или [Route]?

1 Ответ

1 голос
/ 04 августа 2020
    [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. это решит вашу проблему

...