我已经看过很多关于这个的帖子,但是我的新 WebAPI 的 DELETE 方法根本不起作用并返回 404,使用 Windows 7 32 位,IIS 7.5。
我试过了
- 卸载 WebDAV
- 将 PUT、DELETE、OPTIONS 添加到 ExtensionlessUrlHandler-Integrated-4.0 处理程序(和 32 位/64 位处理程序)。
- 允许所有模块运行。
一切都无济于事,全部返回 404。如果我将 DELETE 类型更改为 GET,那么服务运行 GET 命令非常好。
有人对此有任何其他想法吗?这让我疯狂。
编辑:
我正在调用这样的 DELETE 方法(中介是 jQuery 调用的包装器):
mediator.publish("AjaxCall", {
url: "/api/files/" + $(a.currentTarget).data("fileid"),
type: "DELETE",
}
});
和 WebAPI:
// DELETE api/<controller>/5
// [HttpDelete] - Tried this too
public void Delete(int fileId)
{
Files.DeleteFile(fileId);
}
和相关的web.config:
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>