Ric*_*ahl 2 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);
}
Run Code Online (Sandbox Code Playgroud)
我明确地将路由名称更改为deletename以排除其他路由过载冲突.
上面的操作没有触发 - 我从IIS中找不到404.但是,如果我将上面的动作切换到HttpVerbs.Get路线是没有问题的.
长期以来第一次使用MVC而不是Web API构建API,我无法弄清楚为什么路由没有触发 - 它几乎看起来像任何DELETE操作都被阻止了.我在不同的控制器中看到相同的行为 - GET工作正常,但是DELETE操作返回404.是否需要翻转某些配置设置以启用其他动词?
这可能是由于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" />
Run Code Online (Sandbox Code Playgroud)
后:
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |