關於net core 站點通過iis部署,Delete和Put請求被攔截報跨域錯誤的問題


環境:netcore 5.0   iis 8.5

ajax調用delete接口時發生了以下錯誤

 很困惑,檢查了跨域配置如下:

 並正常啟用了中間件如下:

前端訪問均正常,且get、post等請求也能正常訪問,就是delete和put報了405 methd not allowed 和跨域錯誤,意識到事情沒有那么簡單.因為之前配置了跨域后還是沒有生效的問題,原因出在iis上,詳情請閱讀關於net core 站點通過iis部署,跨域配置遇到的問題。一番查閱之后,發現和iis確實有關系,罪魁禍首是WebDAVModule,它似乎設置了默認禁用的PUT和DELETE請求方法。為了讓它們正常工作,我們要么需要更改這些默認設置,要么需要為整個Web應用程序禁用它,修改web.config文件如下:

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

禁用之后,問題就解決了!

 

總結:問題的關鍵其實是設置了進程內托管,選擇進程內托管,意味着將 .NetCore 應用程序的工作進程托管到 IIS 的工作進程 w3wp.exe 中,使用的 IIS 進程內服務器,即使用的是:IISHttpServer.

 

 WebDAVModule模塊默認是開啟的.


免責聲明!

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



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