4

asp.net 코어 (웹 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; 
} 
} 

, 문서 작성 및 라우팅 오브젝트가 작성했지만, 난이 오류가 "어떤 경로가 지정된 값과 일치하지 않습니다"과를 얻을 수를 500 상태.

아무런 문제없이 GetByGuid를 직접 호출 할 수 있습니다.

기존 라우팅 디버거와 마찬가지로 asp.net 코어에 대한 디버깅 도움말을 찾을 수 없습니다.

나는 어떤 도움을 주셔서 감사합니다! 마이크로 소프트의 버젼 패키지에서 버그 것처럼이 수정 경로/API/V1/[컨트롤러]가 작동하고 정의하면

EDIT 은 .. 보인다.

하지만 그건 나를위한 해결책이 아닙니다.

답변

0

그들이 그 버그를 수정 할 때까지 난 그냥 대신 반환 CreatedAtAction("ActionMethodName", dto);을 사용했다.

관련 문제