.Net Core·寄托於IIS的REST服務405的問題


閱文時長 | 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模塊作為獨立拓展模塊,沒有集成,因而沒有這個問題。

【解決方案】

  1. 打開運行輸入optionalfeatures,通過Windows功能,關閉Internet Information Services>常見HTTP功能>WebDAV發布功能。
  2. 注意寄托於IIS7.5以上的REST服務,默認情況下WebDAV模塊會對PUT、DELETE方法進行攔截,需要手動配置下。配置方案是:在項目目錄,找到web.config文件。找到system.webServer節點。添加:
<modules>
<remove name = "WebDAVModule"/>
</modules>

在handlers節點,添加:

<remove name="WebDAV"/>

二、聲明與參考資料   完成度:100%

原創博文,未經許可請勿轉載。

如有幫助,歡迎點贊、收藏、關注。如有問題,請評論留言!如需與博主聯系的,直接博客私信SCscHero即可。


免責聲明!

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



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