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);
вместо этого, пока они не исправить эту ошибку.