2016-10-25 12 views
4

を渡すとき、私はこの方法が動作するように取得しようとしている:これはWebApiConfigある404ウェブAPIパラメーター

public class DocumentenController : ApiController 
{  
    [HttpPost] 
    [Route("DeleteDocument/{name}/{planId}")] 
    public IHttpActionResult DeleteDocument(string name, int planId) 
    { 
     _documentenProvider.DeleteDocument(planId, name); 
     return Ok(); 
    } 
} 

を:

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のルーティング設定を使用する場合。

関連する問題