“PUT”方法在IIS7.5中“405方法不允许”

我使用WebClienttypes将* .cabfile upload到我的服务器。 在服务器端,我使用PUT方法为* .cab文件注册了一个HTTP处理程序,如下所示:

<add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" /> 

但是我总是得到了405方法不允许的错误,响应表示允许的方法如下:

 Headers = {Allow: GET, HEAD, OPTIONS, TRACE Content-Length: 1293 Content-Type: text/html Date: Fri, 27 May 2011 02:08:18 GMT Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET} 

即使我明确地允许我的Web应用程序的IIS请求筛选中的PUT方法,同样的错误仍然存​​在。

目前,我认为这是一个IIS相关的问题。 希望有人能给我一些启示。

谢谢。

通常,这个错误是由试图处理这种请求的WebDAV模块引起的。 一个简单的解决scheme是将其从模块和system.webServer部分的处理程序中删除,只是在您的web.config文件中。 这里有一个configuration示例:

 <system.webServer> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> </handlers> </system.webServer> 

我启用了失败请求追踪,并获得以下信息:

  <EventData> <Data Name="ContextId">{00000000-0000-0000-0F00-0080000000FA}</Data> <Data Name="ModuleName">WebDAVModule</Data> <Data Name="Notification">16</Data> <Data Name="HttpStatus">405</Data> <Data Name="HttpReason">Method Not Allowed</Data> <Data Name="HttpSubStatus">0</Data> <Data Name="ErrorCode">0</Data> <Data Name="ConfigExceptionInfo"></Data> </EventData> 

所以,我从我的IIS卸载WebDAVModule,现在一切都很好〜

IIS跟踪function非常有用。

托pipeMVC4 WebApi项目时,我有WebDAV的这个问题。 我通过将这一行添加到web.config来解决它:

 <handlers> <remove name="WebDAV" /> <add name="WebDAV" path="*" verb="*" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> </handlers> 

正如这里所解释的: http : //evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html

卸下WebDAV模块应该足够了。 只要改变你的Web.config:

 <system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAVModule" /> 

我尝试了大部分的答案,不幸的是,他们都没有完成。

这是为我工作。 有三件事情要做你想要的网站(select网站):

  1. 打开WebDav Authoring Rules ,然后selectDisable WebDAV选项出现在右侧栏上。

  2. selectModules ,findWebDAV Module并将其删除。

  3. selectHandlerMapping ,findWebDAVHandler并将其删除。

重新启动IIS。

从这里采取,它为我工作:

1.转到IISpipe理器。

2.点击你的应用程序。

3.转到“处理程序映射”。

4.在function列表中,双击“WebDAV”。

5.点击“请求限制”。

6.在“动词”选项卡中select“所有动词”。

7.按OK。

不pipe出于什么原因,在web.config中将WebDAVModule标记为“remove”并不足以解决我的问题。

我发现了另一种解决问题的方法。 如果你在同一条船上,试试这个:

  1. 在IISpipe理器中,select需要支持PUT的应用程序。
  2. 在function视图中,findWebDAV创作规则 。 双击它,或从上下文菜单中select打开function (右键单击)。
  3. 在“操作”窗格中,find并单击“ WebDAV设置…”
  4. 在WebDAV设置中,find请求筛选行为 ,然后find允许动词筛选 。 将允许动词筛选设置为False
  5. 在“操作”窗格中,单击“ 应用”

这可以防止WebDAV拒绝它不支持的动词,从而允许PUT不受干扰地stream向RESTful处理程序。

我有与PUT,PATCH和DELETE相同的问题,但没有安装任何WebDAV。 本文中的解决scheme1最终帮助了我: http : //support.microsoft.com/kb/942051

最好只删除未使用的WebDAVfunction。 转到程序和function => 打开或closuresWindowsfunction,并禁用WebDAV发布

Internet信息服务 => 万维网服务 => 通用HTTPfunction

在这里输入图像描述

对我来说,这个错误不会消失,并允许PUT方法,无论我做什么..卸载webdav,把configuration在web.config从处理程序和模块中删除webdav,并设置PUT作为请求filter上允许的动词iis ..并确保处理请求的iis处理程序映射具有PUTconfiguration..

我的问题最终是由于ASP.NET 4.5 Extensions的安装不当造成的。 从服务器angular色和function中删除了与asp.net相关的所有内容。 重新启动。 阅读angular色并重新启动。 一切工作与上面的configuration。

—下面将使PUT被接受,但将它发送到错误的处理程序。 – 下面的

最后,在iis上的TRACE处理程序映射上添加PUT动词作为允许的动词。因为我启用了失败的错误跟踪,并且此动词不允许动词。

上次我在另一台服务器的IIS上遇到了同样的问题,这是由于在URL末尾缺less'/',因为它使用了默认的处理程序,而不使用默认的文档,现在我意识到..所以检查IIS处理程序映射,如果没有别的帮助。

我有这个问题,但没有任何与WebDAV相关的问题。 在我的情况下,客户端发送一个POST到www.myServer.com/api/chart。 这个调用应该由“ExtensionlessUrlHanlder-Integrated-4.0”来处理,然而,在我的服务器目录“… \ Server \ api \ chart \”中创build了一个本地文件结构。 这意味着正在调用“StaticFile”处理程序。 删除这些本地文件终于解决了这个问题。

如果IIS应用程序池在经典模式下运行,请确保在web.config中具有以下内容

 <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" /> 

在我的情况下,我已经将Web Deploy重新部署到另一个端口,这也是IIS端口(不是80)。 我一开始并没有意识到,但即使在同一个端口下也没有运行错误,但似乎Web Deploy最有可能是因为某种原因,而不是IIS出于某种原因而响应,导致这个错误。 我只是把我的IIS绑定到另一个端口,一切都很好。 ;)