首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IIS不允许放置和删除谓词- ASP.NET 8

IIS不允许放置和删除谓词- ASP.NET 8
EN

Stack Overflow用户
提问于 2012-06-06 07:34:09
回答 12查看 209.2K关注 0票数 156

我最近从Visual Studio 2010升级到了Visual Studio 2012 RC。安装程序还会安装IIS 8 Express,Visual Studio现在将其用作默认web服务器。

IIS 8阻止了使用PUT和DELETE谓词的WEB API请求。IIS返回405错误The requested resource does not support http method 'PUT'

我知道人们在过去对此有问题,在Stack Overflow上有几条关于它的消息。对于IIS7Express,解决方案是卸载WebDav。不幸的是,在IIS8中我看不到任何方法来做到这一点。

我试着从applicationhost.config中编辑掉WebDav部分,但是没有帮助。例如,我从配置文件中删除了<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />

我在这件事上花的时间太长了。必须有一种简单的方法来启用PUT和DELETE?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-06-06 10:07:21

好吧。我终于把这件事搞清楚了。要让PUT和DELETE动词在IIS8中正常工作,您需要克服一些困难。事实上,如果您安装了VS2012的候选版本并创建了一个新的WEB API项目,您会发现示例的PUT和DELETE方法返回了404个开箱即用的错误。

要在Web API中使用PUT和DELETE谓词,您需要编辑%userprofile%\documents\iisexpress\config\applicationhost.config并将谓词添加到ExtensionlessUrl处理程序,如下所示:

更改此行:

代码语言:javascript
复制
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

至:

代码语言:javascript
复制
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

此外,您还应确保WebDAV不会干扰您的请求。这可以通过注释掉applicationhost.config中的以下几行来完成。

代码语言:javascript
复制
<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
<add name="WebDAVModule" /> 
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />

还要注意,默认的Web API约定是您的方法名称应该与调用的HTTP谓词相同。例如,如果您正在发送一个HTTP Delete请求,那么默认情况下,您的方法应该命名为delete。

票数 168
EN

Stack Overflow用户

发布于 2013-11-01 16:04:54

如下所示更改您的Web.Config文件。它会变得很有魅力。

在节点<system.webServer>中添加以下代码部分

代码语言:javascript
复制
<modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
</modules>

添加后,您的Web.Config将如下所示

代码语言:javascript
复制
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/>
    </modules>
    <httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
    </httpProtocol>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>
票数 131
EN

Stack Overflow用户

发布于 2014-09-24 03:43:09

更新你的web.config

代码语言:javascript
复制
  <system.webServer>
    <modules>
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <remove name="WebDAV" />
      <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>

http://odetocode.com/blogs/scott/archive/2012/08/07/configuration-tips-for-asp-net-mvc-4-on-a-windows.aspx

无需修改主机配置。

票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10906411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档