.NET Core api部署到IIS上405的問題


今天部署到iis 服務器上,api的put請求一直報405。其他像get post都沒問題。

google了半天,找到兩種解決方案,親測都可以。但我個人認為不是最理想的解決方案。

1.IIS拒絕PUT和DELETE請求是由默認注冊的一個名為WebDAVModule的自定義HttpModule導致的。WebDAV的全稱為Web-based Distributed Authoring and Versioning,它是一個在多用戶之間輔助協同編輯和管理在線文檔的HTTP擴展。該擴展使應用程序可以直接將文件寫到Web Server上,同時支持文件的加鎖和版本控制。微軟是推動WebDAV成為一個標准的主導力量,它自己利用自定義的HttpModule實現了IIS針對WebDAV的支持。但是這個默認注冊(注冊名稱為WebDAVModule)會拒絕HTTP方法為PUT和DELETE的請求,如果我們的站點不需要提供針對WebDAV的支持,解決這個問題最為直接的方式就是利用如下配置將注冊的HttpModule移除即可:

(此方法參考:http://blog.baibaota.com/84.html)

 <system.webServer>
 <modules runAllManagedModulesForAllRequests="true">
 <remove name="WebDAVModule" />
 </modules>
 </system.webServer>

或者

 <modules runAllManagedModulesForAllRequests="true" runManagedModulesForWebDavRequests="true" >
   <remove name="WebDAVModule" />
 </modules>

2.直接通過iis在模塊中移除

直接刪除即可。

總結:其實這兩種本質上是一致的。都是移除WebDAVModule,但是在.NET Core下dev下是沒有web.config,只有發布后才生成,這就導致每次發布都要修改。

目前還沒找到更好的解決方法,希望有知道的能告知一下,萬分感謝!

 


免責聲明!

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



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