Я борюсь с новым контроллером в своем веб-API. У меня есть два метода:
[Route("PositionSettingsForDay/{day}")]
[HttpGet("{day}")]
public async Task<IActionResult> GetPositionSettingsForDay(int day) {...}
[Route("PositionSettingsForDay/{day}")]
[HttpDelete("{day}")]
public async Task<IActionResult> DeletePositionSettingsForDay(int day) {...}
При вызове любого из них с помощью Postman я получаю следующую ошибку:
An unhandled exception occurred while processing the request.
AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:
Backend.Controllers.PositionSettingsController.GetPositionSettingsForDay (Backend) Backend.Controllers.PositionSettingsController.DeletePositionSettingsForDay (Backend)
В других контроллерах у меня есть методы Получать и Удалить, которые без проблем используют один и тот же маршрут.
Более того, я обнаружил, что даже если я меняю маршруты на другие, мой WebApi все равно ведет себя странно.
Когда я отправляю запрос Удалить моему методу GetPositionSettingsForDay
вместо возврата 404, он действует так, как если бы был отправлен запрос Получать.
Кто-нибудь может мне посоветовать?
Вы неправильно используете маршрутизацию атрибутов. Вы должны применить [Route("PositionSettingsForDay")]
на вашем контроллере. Уберите их в своих действиях и пусть только HttpDelete
et HttpGet
.
Такая простая вещь ... Большое спасибо, Аарон!
Ссылка Маршрутизация к действиям контроллера
Старайтесь не передавать параметр в атрибуты HTTP, например
[HttpGet]