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”。” 我拥有上面显示的所有内容,除了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。 请添加这个以上是关于ASP.NET 处理 PUT/DELETE 动词的主要内容,如果未能解决你的问题,请参考以下文章