在虛擬機的IIS上部署項目的時候訪問接口報405錯誤,接口請求方式為(PUT),試了下所有PUT請求的都無法訪問,由此可知IIS應該是未允許當前請求方式,(Delete同理)
解決方案
1.首先查看aspNetCore在IIS中是否限制了請求方式,經過查看並未發現不被允許的請求方式。處理程序映射=>aspNetCore
2.修改發布后的文件web.config
新增這段代碼:
<modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAVModule" /> </modules>
或者
<modules runAllManagedModulesForAllRequests="true" runManagedModulesForWebDavRequests="true" > <remove name="WebDAVModule" /> </modules>
查了一下解釋是: 通過了解 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移除即可。
3.關閉WEBDAV功能
.NET Core下dev下是沒有web.config,只有發布后才生成,這就導致每次發布都要修改。 這樣非常不方便。如果沒有使用到WebDAV ,可以直接移除這個模塊。卸載程序=》啟用或關閉Windows功能=>Internet Information Service=>萬維網服務=>常見HTTP功能=>WEBDAV發布。