12

这通常适用于 ASP.NET,但也适用于 Web API。

我们如何在启用 RAMMFAR (RunAllManagedModulesForAllRequests) 的情况下处理 PUT/DELETE 动词。

我无法在 IIS 中配置处理程序映射,因为我的站点托管在 Azure Web 角色上,并且我所做的任何更改都不会保留。

4

3 回答 3

19

@Alexander 的回答让我走上了正确的道路。必须添加以下内容才能让 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>
于 2012-06-22T14:42:54.403 回答
4

FWIW,我们已经修改了 MVC/Web API 项目模板,以允许所有常见的 HTTP 动词完全使用上述机制。该更改将在下一次正式发布(将是 RTM)中提供。这将默认工作。

于 2012-06-24T02:42:00.770 回答
2

已经尝试允许System.WebServerweb.config 部分中的动词?

像这样的东西:

<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>
于 2012-06-22T13:48:38.203 回答