请求部署在 IIS7.5 上的 REST 服务的 Put/Post/Delete 操作发生 HTTP Error 405.0 - Method Not Allowed 错误之解决

Posted Hello World!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请求部署在 IIS7.5 上的 REST 服务的 Put/Post/Delete 操作发生 HTTP Error 405.0 - Method Not Allowed 错误之解决相关的知识,希望对你有一定的参考价值。

背景

请求部署在 IIS7.5 上的 REST 服务的 Put/POST/DELETE 操作发生 HTTP Error 405.0 - Method Not Allowed 错误。

Issue

解决

方法一:从HttpModule中移除

IIS拒绝PUT和DELETE请求是由于IIS为网站默认注册的一个名为WebDAVModule的自定义HttpModule导致的,如果我们的站点不需要提供针对WebDAV的支持,所以IIS7关闭WebDAV扩展服务,最为直接的方式就是利用如下配置将注册的HttpModule移除即可:

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

 

方法二:移除WebDAV模块

除了以上方法还可以通过在部署Web API的网站中,移除掉WebDAV模块即可:

移除WebDAV模块

 

方法三:卸载WebDAV扩展:

除了上面两种方法外,还可以通过卸载WebDAV扩展,从根本上彻底关闭了WebDAV扩展服务:

卸载WebDAV扩展

 

背景知识

WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准。利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。
在IIS 7.0中,WebDAV是作为独立扩展模块,需要单独进行下载,而IIS 7.5中将集成WebDAV,然而WebDav把Put,Post,Delete给咔嚓了。
所以在IIS 7.5上部署的RESTful服务(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC)就悲剧了,当发送Put请求就会发生HTTP Error 405.0 – Method Not Allowed错误。

参考资料

http://www.cnblogs.com/shanyou/archive/2012/03/23/2414252.html
http://www.webkaka.com/tutorial/iis/2017/033020/

以上是关于请求部署在 IIS7.5 上的 REST 服务的 Put/Post/Delete 操作发生 HTTP Error 405.0 - Method Not Allowed 错误之解决的主要内容,如果未能解决你的问题,请参考以下文章

IIS7.5 上的静态文件处理程序不提供脚本

优化IIS7.5支持10万个同时请求的配置方法_win服务器

403 - 禁止在 iis7.5 上部署基本 MVC 3 [重复]

优化IIS7.5支持10万个同时请求的配置方法

多个应用程序上的 SSO 和 REST Api 身份验证

在 IIS7.5 上找不到使用 serviceStack 的 PUT 处理程序