CreatedAtAction () не может найти маршрут с соответствующими параметрами - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь вернуть результат 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);
    }
}

Любая помощь будет принята с благодарностью .

...