今天部署到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,只有發布后才生成,這就導致每次發布都要修改。
目前還沒找到更好的解決方法,希望有知道的能告知一下,萬分感謝!
