4

我在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/[控制器]它的工作。

但這不是我的解決方案。

回答

0

我只是用回CreatedAtAction("ActionMethodName", dto);代替,直到他們解決這個bug。

相關問題