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; 
} 
} 

、文書が作成され、ルーティングオブジェクトが作成されましたが、私はエラーを取得「Noルートは、供給された値と一致していない」とgetを500ステータス。

私は問題なく直接GetByGuidを呼び出すことができます。

既存のルーティングデバッガと同様に、asp.netコアのデバッグヘルプが見つかりませんでした。

私は助けていただきありがとうございます!それはMicrosoftのバージョン管理パッケージからバグだろうよう

EDIT が見える私は固定ルート/ API/V1/[コントローラー]を定義した場合...それが働いています。

しかし、それは私の解決策ではありません。

答えて

4

私自身の質問にお答えします: これは本当にMicrosoftのバージョニングパッケージのバグであり、間もなく修正される予定です。彼らはそのバグを修正するまで、私はちょうど代わりにリターンCreatedAtAction("ActionMethodName", dto);を使用

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

関連する問題