非常詭異的IIS下由配置文件加上svg的mime頭導致整個網站的靜態文件訪問報錯誤

調試了兩天遇到一個非常詭異的問題 一個系統穩定運行了很多年,是用mvc5+WIN2008R2  + .NET 4.5 +IIS環境下運行,非常穩定,最近想遷移到一台新的伺服器,為了少麻煩在阿里雲上買了一台同樣環境的WINDOWS 2008 R2 ,把程式部署上去後報了十分詭異的錯誤。

1.部署新伺服器後,全部動態程式運行正常,但是所有靜態文件無法載入(圖片,css,js,html)純靜態訪問全部報500錯誤(無法顯示頁面,因為發生內部伺服器錯誤)

 

 

 單獨訪問任何靜態資源都報這個錯

最後定位到了問題原因,原來在web.config里關鍵的一句去掉svg的mine配置就正常了。去掉配置節點system.webServer/modules/staticContent/

<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />

去掉就正常加上就報錯(僅限訪問靜態文件報錯,動態文件正常)

 

 

 

 

 

 

 這讓人十分詭異 ,最後只有把這一句去掉,去掉也影響不大,因為svg只是一個介面模板要使用的美化圖標之類的,不影響不大,但始終像吃了蒼蠅一樣。有遇到同樣問題的歡迎共勉。

 這個莫名奇妙錯誤描述直接顯示文本,沒有詳細錯誤程式碼 ,導致排查過程中被嚴重誤導,以為是環境安裝許可權之類的問題

最後搜索到一個解決辦法  繁體文章有點類似癥狀

https://hant-kb.kutu66.com/mip/12245572 

前面加上一句

<remove fileExtension=".svg"/>

 

 

以下是嘗試使用的各辦法走了不少彎路

1.嘗試把網站目錄許可權設置在EveryOne完全控制 ,雖然很危險也沒有解決.
2.嘗試把runAllManagedModulesForAllRequests改成=false 或刪除
3.建立獨立的應用程式池來運行
4.應用程式池 高級設置->啟用32位應用程式 設置true
5.嘗試各種重啟 重裝環境。
6.以為頻寬 記憶體不夠,加大頻寬記憶體配置
7.開始網站目錄建立在C盤,然後搬到其他硬碟。

這個問題報錯太詭異走了太多彎路記錄以下給其他遇到的人共勉

 

Tags: