| 閱文時長 | | 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即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/272732.html
標籤:.NET技术
