j'ai quelques problèmes avec le routage dans le noyau asp.net (Web api).
J'ai ce contrôleur (simplifié):
[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;
}
}
Si j'appelle Créer, le document est créé et l'objet de routage a été créé, mais l'erreur "Aucune route ne correspond aux valeurs fournies" et le statut 500.
Je peux appeler GetByGuid directement, sans aucun problème.
Je ne pouvais trouver aucune aide au débogage pour le noyau asp.net (comme tout débogueur de routage existant).
J'apprécierais toute aide!
EDIT On dirait qu'il s'agirait d'un bogue du paquet de gestion de versions de Microsoft. Si je définit la route de réparation/api/v1/[Controller], cela fonctionne.
Mais ce n'est pas une solution pour moi.
Je répondrai à ma propre question: C'était vraiment un bogue dans le package de gestion de versions de Microsoft et il va être corrigé bientôt.
https://github.com/Microsoft/aspnet-api-versioning/issues/18
Je viens d'utiliser return CreatedAtAction("ActionMethodName", dto);
à la place jusqu'à ce qu'ils corrigent ce bogue.