閱文時長 | | 0.48分鍾 | 字數統計 | | 828.8字符 |
主要內容 | | 1、引言&背景 2、聲明與參考資料 | ||
『.Net Core·寄托於IIS的REST服務405的問題』 | |||
編寫人 | | SCscHero | 編寫時間 | | 2021/4/6 AM12:55 |
文章類型 | | 系列 | 完成度 | | 已完成 |
座右銘 | 每一個偉大的事業,都有一個微不足道的開始。 |
一、引言&背景 完成度:100%
a) 環境說明
操作系統:Windows10 專業版
開發框架:.Net Core3.1(也包含其他的WebAPI框架)
API謂詞:Delete、Put
Web服務組件:IIS10(根據已有資料,IIS7.5版本以上均會存在此問題)
b) 應對問題&場景
.Net Core WebAPI寄托於IIS,使用Put、Delete謂詞進行訪問返回"HTTP Error 405.0 - Method Not Allowed"的錯誤。
c) 解決原理&方法
【原理】
IIS7.5中集成了名為"WebDAV"的HttpModule。WebDAV是超文本傳輸協議(HTTP)的一組擴展,為Internet上計算機之間的編輯和文件管理提供了標准。利用這個協議用戶可以通過Web進行遠程的基本文件操作,如拷貝、移動、刪除等。但是這個默認注冊(注冊名稱為WebDAVModule)會拒絕HTTP方法為PUT和DELETE的請求。所以在IIS7.5上部署的RESTful服務(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC),當發送Put、Delete請求就會發生HTTP Error 405.0 - Method Not Allowed錯誤。而IIS7.0之前WebDAV模塊作為獨立拓展模塊,沒有集成,因而沒有這個問題。
【解決方案】
- 打開運行輸入optionalfeatures,通過Windows功能,關閉Internet Information Services>常見HTTP功能>WebDAV發布功能。
- 注意寄托於IIS7.5以上的REST服務,默認情況下WebDAV模塊會對PUT、DELETE方法進行攔截,需要手動配置下。配置方案是:在項目目錄,找到web.config文件。找到system.webServer節點。添加:
<modules>
<remove name = "WebDAVModule"/>
</modules>
在handlers節點,添加:
<remove name="WebDAV"/>
二、聲明與參考資料 完成度:100%
原創博文,未經許可請勿轉載。
如有幫助,歡迎點贊、收藏、關注。如有問題,請評論留言!如需與博主聯系的,直接博客私信SCscHero即可。