【发布时间】:2018-02-28 02:12:07
【问题描述】:
这是我的api配置类:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
}
}
这是我的 api 控制器类:
public class RoleController : ApiController
{
// Some action that works fine...
// Another action that works fine...
public Result Delete([FromBody]int RoleID)
{
return RoleBL.Delete(RoleID);
}
}
我正在使用POST 调用我的操作,它们运行良好。
但是,当我尝试使用 POST 调用 Delete 操作时,出现以下错误:
405 方法不允许
请求的资源不支持 http 方法“POST”。
显然,这是因为 ApiController 强制执行 REST 约定
它期望 DELETE 动词代表 Delete 动作。
现在,如何禁用此 REST 约定约束 并以经典的方式写下我的动作?
【问题讨论】:
-
这叫做
Convention over Configuration,你不能禁用它,你甚至不应该尝试。要么遵循 REST,要么不使用 REST 名称。
标签: c# asp.net-web-api