传递 web api 参数时 404
404 when passing web api parameters
我正在尝试让这个方法起作用:
public class DocumentenController : ApiController
{
[HttpPost]
[Route("DeleteDocument/{name}/{planId}")]
public IHttpActionResult DeleteDocument(string name, int planId)
{
_documentenProvider.DeleteDocument(planId, name);
return Ok();
}
}
这是 WebApiConfig :
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: UrlPrefix + "/{controller}/{action}/{id}",
defaults: new {id = RouteParameter.Optional}
);
但是当我使用 post:
这样调用它时,我得到了 404
http://localhost/QS-documenten/api/documenten/deletedocument/testing/10600349
解决这个问题的正确方法是什么?
您必须按照以下方式发送请求:
http://localhost/QS-documenten/deletedocument/testing/10600349
当您使用路由属性时,自定义路由会覆盖默认的 api 路由配置。
示例中的 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();
}
}
我正在尝试让这个方法起作用:
public class DocumentenController : ApiController
{
[HttpPost]
[Route("DeleteDocument/{name}/{planId}")]
public IHttpActionResult DeleteDocument(string name, int planId)
{
_documentenProvider.DeleteDocument(planId, name);
return Ok();
}
}
这是 WebApiConfig :
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: UrlPrefix + "/{controller}/{action}/{id}",
defaults: new {id = RouteParameter.Optional}
);
但是当我使用 post:
这样调用它时,我得到了 404http://localhost/QS-documenten/api/documenten/deletedocument/testing/10600349
解决这个问题的正确方法是什么?
您必须按照以下方式发送请求:
http://localhost/QS-documenten/deletedocument/testing/10600349
当您使用路由属性时,自定义路由会覆盖默认的 api 路由配置。
示例中的 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();
}
}