#c# #.net-core #asp.net-core-webapi #asp.net-core-routing
Вопрос:
У меня есть два действия:
[HttpGet]
[Route("Users/{id}")]
public async Task<IActionResult>GetUser(int id)
[HttpGet]
[Route("Users")]
public async Task<IActionResult>GetUser(string name)
Когда я пытаюсь позвонить /Пользователям?имя=aaa, я получаю следующую ошибку:
Майкрософт.AspNetCore.Маршрутизация.Соответствие.Исключение AmbiguousMatchException: Запрос совпал с несколькими конечными точками. Матчи:
Что я делаю не так?
———— Я заметил, что у меня есть еще одно действие: [HttpGet] публичные асинхронные предложения задач() Это было причиной, извините
Ответ №1:
Если вы хотите получить данные из строки запроса, вам необходимо использовать атрибут FromQueryAttribute
// e.g. Users/10
[HttpGet]
[Route("Users/{id:int}")]
public async Task<IActionResult>GetUser([FromRoute] int id)
// e.g. Users?name=John
[HttpGet]
[Route("Users")]
public async Task<IActionResult>GetUser([FromQuery] string name)
Комментарии:
1. Я заметил, что у меня есть еще одно действие: [HttpGet] public async TaskGetOffers() Это было причиной, извините и спасибо вам
Ответ №2:
попробуйте использовать приведенный ниже код
[HttpGet]
[Route("Users/{id}")]
public async Task<IActionResult>GetUser([FromQuery] int id)
[HttpGet]
[Route("Users")]
public async Task<IActionResult>GetUser([FromQuery]string name)
Комментарии:
1. Я заметил, что у меня есть еще одно действие: [HttpGet] public async TaskGetOffers() Это было причиной, извините и спасибо вам
Ответ №3:
Можете ли вы перейти с
[Route("Users")]
public async Task<IActionResult>GetUser(string name)
Для
[Route("Users/{name}")]
public async Task<IActionResult>GetUser(string name)
А также укажите тип вашего маршрута
[Route("Users/{id:int}")]
Комментарии:
1. Хорошо, но как я могу сделать это в строке запроса?