“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网站):
-
打开
WebDav Authoring Rules
,然后selectDisable WebDAV
选项出现在右侧栏上。 -
select
Modules
,findWebDAV Module
并将其删除。 -
select
HandlerMapping
,findWebDAVHandler
并将其删除。
重新启动IIS。
从这里采取,它为我工作:
1.转到IISpipe理器。
2.点击你的应用程序。
3.转到“处理程序映射”。
4.在function列表中,双击“WebDAV”。
5.点击“请求限制”。
6.在“动词”选项卡中select“所有动词”。
7.按OK。
不pipe出于什么原因,在web.config中将WebDAVModule标记为“remove”并不足以解决我的问题。
我发现了另一种解决问题的方法。 如果你在同一条船上,试试这个:
- 在IISpipe理器中,select需要支持PUT的应用程序。
- 在function视图中,findWebDAV创作规则 。 双击它,或从上下文菜单中select打开function (右键单击)。
- 在“操作”窗格中,find并单击“ WebDAV设置…” 。
- 在WebDAV设置中,find请求筛选行为 ,然后find允许动词筛选 。 将允许动词筛选设置为False 。
- 在“操作”窗格中,单击“ 应用” 。
这可以防止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绑定到另一个端口,一切都很好。 ;)