請求部署在 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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM