ASP.NET句柄放置/删除谓词

ASP.NET句柄放置/删除谓词,asp.net,iis,asp.net-web-api,Asp.net,Iis,Asp.net Web Api,这通常适用于ASP.NET,但也适用于Web API 在不启用RAMMFAR(RunAllManagedModulesForAllRequests)的情况下,我们如何处理PUT/DELETE谓词 我无法在IIS中配置处理程序映射,因为我的站点托管在Azure Web角色上,我所做的任何更改都不会被持久化。是否已尝试允许Web.config中的System.WebServer节中的动词 大概是这样的: <System.WebServer> <handlers>

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

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


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

是否已尝试允许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>

@Alexander的回答让我走上了正确的道路。必须添加以下内容才能由ASP.NET处理删除/放置:

  <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>


FWIW,我们已经修改了MVC/WebAPI项目模板,允许所有公共HTTP谓词完全使用上述机制。更改将在下一次正式发布(即RTM)中提供。默认情况下它会工作。

不幸的是,这似乎不起作用-我仍然得到404。请添加这一个,它没有任何区别,但您的回答确实提示我查看applicationHost.config。我已经发布了最终对我有用的东西。我从来没有这样做过。我在IIS express常见问题解答中找到了它。我不知道这将如何使用。输入错误?我在VS 2012中创建了一个新的MVC4应用程序,并从web.config中复制了设置。请添加以下内容:“您可以修改%userprofile%\documents\IISExpress\config”文件夹中的IIS Express“applicationHost.config”。除元素外,我已在上面显示了所有内容。当我添加这个时,它开始工作了。这个版本是特定的吗?在IIS 8.0中,它会导致500内部服务器错误