asp.net-mvc - ASP.NET MVC 删除操作未触发

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

我有一个使用属性路由的 ASP.NET MVC 5 Controller ,它似乎无法处理 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 操作都被阻止了。我在不同的 Controller 中看到相同的行为 - GET 工作正常,但 DELETE 操作返回 404。是否有一些配置设置需要翻转以启用其他动词?

最佳答案

这可能是由于 IIS 配置问题造成的,详见 this answer to a similar question

您可能需要在您的 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" />

关于asp.net-mvc - ASP.NET MVC 删除操作未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29468313/

相关文章:

asp.net-mvc - 为什么 ASP.NET 路由优先于 web.config Http Handlers 部分?

javascript - 单独解决方案中的 JavaScript 和 CSS 文件智能感知

asp.net-mvc - 为什么此MVC路由不起作用?

c# - MVC 默认路由不适用于 Controller

c# - 输入 URL,如 http ://example. com 在操作输入中更改为 http :/example. com

asp.net-mvc-3 - 正在从根请求调用区域 Controller

c# - ASP.NET MVC 和登录身份验证

asp.net-mvc - 在 IIS 中创建反向代理

c# - 静态类asp.net mvc中的静态变量

asp.net-mvc - Azure 网站不处理到 '.asp' 文件扩展名的路由