ASP.NET CORE, Web API: ни один маршрут не соответствует предоставленным значениям

У меня есть некоторые проблемы с маршрутизацией в asp.net core (web api).

У меня есть этот контроллер (упрощенный):

[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[Controller]")]
public class DocumentController : Controller
{

[HttpGet("{guid}", Name = "GetDocument")]
public IActionResult GetByGuid(string guid)
{
    var doc = DocumentDataProvider.Find(guid);
    if (doc == null)
        return NotFound();

    return new ObjectResult(doc) {StatusCode = 200};
}


[HttpPost]
public IActionResult Create([FromBody] Document doc)
{
    //... Creating Doc

    //Does not work   
    //var val = CreatedAtRoute("GetDocument", new {guid = doc.Guid.ToString("N")}, document);
    //or this: CreatedAtRoute("GetDocument", new { controller = "Document", guid = doc.Guid.ToString("N")}, document);

    var val = CreatedAtRoute("GetDocument", new { version = "1", controller = "Document", guid = doc.Guid.ToString("N")}, document);

    return val;
}
}

Если я вызываю Create, документ создается и объект маршрутизации был создан, но я получаю ошибку "нет маршрута, соответствующего предоставленным значениям" и получаю статус 500.

Я могу вызвать GetByGuid напрямую, без каких-либо проблем.

Я не смог найти никакой помощи по отладке для asp.net core (как и любой существующий отладчик маршрутизации).

Я был бы признателен за любую помощь!

редактировать Похоже, это будет ошибка из пакета управления версиями microsoft.. если я определяю маршрут исправления / api/v1 / [Controller], он работает.

но это не решение для меня.

2 ответов


Я отвечу на свой собственный вопрос: Это была действительно ошибка в пакете версий microsoft, и она скоро будет исправлена.

https://github.com/Microsoft/aspnet-api-versioning/issues/18


Я просто использовал return CreatedAtAction("ActionMethodName", dto); вместо этого, пока они не исправить эту ошибку.