ASP.NET MVC删除操作未触发

时间:2015-04-06 09:08:38

标签: asp.net-mvc asp.net-mvc-routing

我有一个ASP.NET MVC 5控制器,它使用的属性路径似乎不能用于DELETE操作。

 [Route("deletealbum/{id}")]
 [AcceptVerbs(HttpVerbs.Delete)]
 public ActionResult DeleteAlbum(int id)
 {
     // rest of the code omitted here
     return Json(true, JsonRequestBehavior.AllowGet);
 }

我明确地将路由名称更改为deletename以排除其他路由过载冲突。

以上操作不会触发 - 我从IIS中找不到404。但是,如果我将上述操作切换为HttpVerbs.Get,则发现路线没有问题。

很长一段时间用MVC而不是Web API构建API,我无法弄清楚路由没有触发的原因 - 几乎看起来任何DELETE操作都被阻止了。我在不同的控制器中看到相同的行为 - GET工作正常,但是DELETE操作返回404.是否需要翻转某些配置设置以启用其他动词?

1 个答案:

答案 0 :(得分:6)

这可能是由于this answer to a similar question

中更详细说明的IIS配置问题

您可能需要在IIS配置中启用DELETE(如果需要,还需要PUT),如下所示:

在:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

后:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />