我在asp.net核心(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核心的任何調試幫助(就像任何現有的路由調試器)。
我將不勝感激任何幫助!
EDIT 看起來這將是從微軟的版本控制包的一個錯誤..如果我限定修復途徑/ API/V1/[控制器]它的工作。
但這不是我的解決方案。