ASP.NET 处理 PUT/DELETE 动词

Posted

技术标签:

【中文标题】ASP.NET 处理 PUT/DELETE 动词【英文标题】:ASP.NET Handle PUT/DELETE verbs 【发布时间】:2012-06-22 11:43:26 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

请添加:“您可以修改%userprofile%\documents\IISExpress\config”文件夹中的IIS Express“applicationHost.config”。” 我拥有上面显示的所有内容,除了 元素。当我添加它时,它开始工作了。 这个版本是特定的吗?在 IIS 8.0 中,它会导致 500 内部服务器错误【参考方案2】:

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

【讨论】:

我在 VS 2012 中创建了一个新的 MVC4 应用程序并从 web.config 复制了设置。【参考方案3】:

已经尝试在 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>

【讨论】:

不幸的是,这似乎不起作用 - 我仍然得到 404。 请添加这个 这没有任何区别,但您的回答确实促使我查看 applicationHost.config。我已经发布了最终为我工作的内容。 我从来不需要这样做。我在 IIS express FAQ learn.iis.net/page.aspx/901/iis-express-faq 中找到了它 不知道这将如何与 一起工作。错字?

以上是关于ASP.NET 处理 PUT/DELETE 动词的主要内容,如果未能解决你的问题,请参考以下文章

HTTP动词

ASP.NET Web API、405 状态码和异常处理

PHP多部分表单数据PUT请求?

RESTFUL

ASP.NET Web API - 不允许 PUT 和 DELETE 动词 - IIS 8

如何在 ASP.NET MVC/WebAPI 应用程序中支持 HTTP OPTIONS 动词