2016-10-25 1 views
4

내가 일을이 방법을 얻으려고 매개 변수404 웹 API를 통과

config.MapHttpAttributeRoutes(); 

config.Routes.MapHttpRoute(
    name: "ActionApi", 
    routeTemplate: UrlPrefix + "/{controller}/{action}/{id}", 
    defaults: new {id = RouteParameter.Optional} 
); 

하지만이처럼 호출 할 때 나는 404를 얻을 수 게시물 사용 :

http://localhost/QS-documenten/api/documenten/deletedocument/testing/10600349 

이 문제를 해결하는 올바른 방법은 무엇입니까? 다음과 같이

+1

컨트롤러 수준에서'RoutePrefix'를 놓쳤으므로'api/Documenten'없이 라우트를 만듭니다. –

답변

4

예제의 URL이 컨트롤러의 속성 경로와 일치하지 않습니다.

http://localhost/QS-documenten/api/documenten/deletedocument/testing/10600349 

http://localhost/QS-documenten 호스트 루트 폴더라고 가정하면, 일을 얻고, api/documenten가있는 API를 접두어는 ... 컨트롤러에 경로 접두어를 추가하려면

[RoutePrefix("api/Documenten")] 
public class DocumentenController : ApiController { 
    //eg POST api/documenten/deletedocument/testing/10600349 
    [HttpPost] 
    [Route("DeleteDocument/{name}/{planId}")] 
    public IHttpActionResult DeleteDocument(string name, int planId) { 
     _documentenProvider.DeleteDocument(planId, name); 
     return Ok(); 
    } 
} 

출처 : Attribute Routing in ASP.NET Web API 2 : Route Prefixes

2

당신은 당신의 요청을 보내야합니다 :

http://localhost/QS-documenten/deletedocument/testing/10600349 

당신이 경로 속성, 사용자 지정 경로 재정의 기본 API를 라우팅 구성을 사용합니다.