404 when passing web api parameters

asp.net, asp.net-web-api, asp.net-web-api-routing, c#

Solution

The URL in example does not match attribute route on controller.

To get

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

to work, assuming that `http://localhost/QS-documenten` is the host and root folder, and that `api/documenten` is the api prefix then add a route prefix to the controller...

[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();
    }
}

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

Problem

I'm trying to get this method to work: ``` public class DocumentenController : ApiController { [HttpPost] [Route("DeleteDocument/{name}/{planId}")] public IHttpActionResult DeleteDocument(string name, int planId) { _documentenProvider.DeleteDocument(planId, name); return Ok(); } } ``` This is the WebApiConfig : ``` config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "ActionApi", routeTemplate: UrlPrefix + "/{controller}/{action}/{id}", defaults: new {id = RouteParameter.Optional} ); ``` But I get a 404 when I call it like this using a post: ``` http://localhost/QS-documenten/api/documenten/deletedocument/testing/10600349 ``` What is the proper way do solve this?

Original source