Я пытаюсь вернуть результат CreatedAtAction()
из ApiController «NotUnitsController», который указывает маршрут на отдельном ApiController «UnitsController».
Все работает, как ожидалось, пока не будет получен ответ CreatedAtAction()
. Я получаю сообщение об ошибке:
System.InvalidOperationException: ни один маршрут не соответствует предоставленным значениям.
Я не уверен, что мне не хватает. Я попытался решить проблему следующим образом:
- Проверено написание параметров маршрута на обоих контроллерах
- Попытка предоставить имя маршрута для
[HttpGet]
вUnitsController
и ссылку на это имя изNotUnitsController
. - Добавлен
/
к маршруту[HttpGet("/{unitKey}")]
, как предложено в этом ответе.
Часть маршрутов v1
жестко запрограммирована. Я обнаружил, что это может быть проблема с динамическим управлением версиями маршрута в этой проблеме GitHub а>.
Я также могу выполнять запросы GET к конечной точке UnitsController. Только ответ CreatedAtAction()
не работает.
Вот фрагменты двух рассматриваемых контроллеров.
NotUnitsController:
[ApiController]
[Route("v1/not-units/{notUnitsKey:guid}/units")]
public class NotUnitsController : ControllerBase
{
[HttpPost]
public async Task<IActionResult> Post(Guid notUnitsKey, Input unitInput)
{
// TODO: Create Unit
var unitKey = Guid.NewGuid();
return CreatedAtAction(actionName: nameof(UnitsController.Get),
controllerName: nameof(UnitsController),
routeValues: new { unitKey },
value: new { unitKey });
}
}
UnitsController:
[ApiController]
[Route("v1/units")]
public class UnitsController : ControllerBase
{
[HttpGet("{unitKey:guid}")]
public async Task<IActionResult> Post(Guid unitKey)
{
// TODO: Get Unit by key
var unit = $"My Unit with Id: {unitKey}";
return Ok(unit);
}
}
Любая помощь будет принята с благодарностью.