背景
請求部署在 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 是超文本傳輸協議 (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/