1. 程式人生 > >非常詭異的IIS下由配置檔案加上svg的mime頭導致整個網站的靜態檔案訪問報錯誤

非常詭異的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盤,然後搬到其他硬碟。

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

&n