ASP.NET MVC 删除操作未触发
ASP.NET MVC Delete Action not firing
我有一个 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 操作 returns 一个 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 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 操作 returns 一个 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" />