1. 程式人生 > 實用技巧 >【轉】專案部署在IIS上訪問介面報405:Method not Allowed

【轉】專案部署在IIS上訪問介面報405:Method not Allowed

在虛擬機器的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釋出。