这一般适用于ASP.NET,但也适用于Web API。
如何在没有启用RAMMFAR(RunAllManagedModulesForAllRequests)的情况下处理PUT / DELETE动词。
我无法在IIS中配置处理程序映射,因为我的网站托管在Azure Web角色上,并且我所做的任何更改都不会保留。
答案 0 :(得分:19)
@亚历山大的回答让我走上正轨。必须添加以下内容才能获得ASP.NET处理的DELETE / PUT:
<system.webServer>
<modules runAllManagedModulesForAllRequests="false"/>
<handlers>
<remove name="ExtensionlessUrl-Integrated-4.0" />
<add name="ExtensionlessUrl-Integrated-4.0"
path="*."
verb="GET,HEAD,POST,DEBUG,DELETE,PUT"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
答案 1 :(得分:4)
FWIW,我们修改了MVC / Web API项目模板,以允许所有常见的HTTP动词完全使用上述机制。这一变化将在下一次正式下降(将是RTM)中提供。这将默认工作。
答案 2 :(得分:2)
已经尝试在web.config中的System.WebServer
部分中允许使用动词吗?
这样的事情:
<System.WebServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE"
modules="IsapiModule"
scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
resourceType="Unspecified"
requireAccess="Script"
preCondition="classicMode,runtimeVersionv4.0,bitness64"
responseBufferLimit="0" />
</handlers>
</System.WebServer>