Я пытаюсь вернуть результат CreatedAtAction()
из ApiController "NotUnitsController", который указывает маршрут на отдельный ApiController "UnitsController".
Все работает, как ожидалось, до генерации ответа CreatedAtAction()
. Я получаю сообщение об ошибке:
System.InvalidOperationException: ни один маршрут не соответствует предоставленным значениям.
Я не уверен, что мне не хватает. Я попытался устранить проблему следующим образом:
- Проверено написание параметров маршрута на обоих контроллерах
- Попытка предоставить имя маршрута для
[HttpGet]
в UnitsController
и ссылаться на это имя из NotUnitsController
. - . Добавлен
/
к [HttpGet("/{unitKey}")]
маршруту, как предложено в в этом ответе .
v1
часть маршрутов жестко запрограммирована. Я обнаружил, что это может быть проблема с динамическим c управлением версиями маршрута на этой проблеме 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);
}
}
Любая помощь будет принята с благодарностью .