關於IIS 503錯誤處理

前言

工作需求換了台新筆電後,將舊筆電的IIS設定匯進來,執行後出現503錯誤。事件檢視器訊息如下
The Module DLL C:\Windows\system32\inetsrv\aspnetcore.dll failed to load.  The data is the error.

此訊息是由於IIS的Site部份為.Net Core。本以為只要安裝好.Net Core Hosting Bundle就OK了,但....還是一樣會發生錯誤。

原因
此錯誤是有歷史痕跡的! 舊筆電一開始裝的是.Net Core 1.1還是2.0....忘了,其AspNetCoreModule的位置是在C:\Windows\system32\inetsrv\aspnetcore.dll。但之後的.Net Core改成AspNetCoreModuleV2,原有的已不在使用,而在我將舊筆電的IIS設定匯進來後,AspNetCoreModule的設定也匯進來到applicationHost.config了。白話說就是IIS的組態有不存在.dll的設定。

解決方式
修改組態C:\Windows\System32\inetsrv\config\applicationHost.config,將AspNetCoreModule模組移除或註解起來。
其他錯誤
在修改完後,一樣出現503錯誤,事件檢視器訊息
The Module DLL C:\Program Files\IIS\Application Request Routing\requestRouter.dll failed to load.  The data is the error.
The Module DLL C:\Windows\system32\inetsrv\rewrite.dll failed to load.  The data is the error.

因為有用到Url Rewrite,此錯誤使用Web Platform將相關模組安裝好,就OK了。
其它參考
  • https://stackoverflow.com/questions/40161982/aspnetcore-dll-failed-to-load

這個網誌中的熱門文章

IIS 設定只允許特定IP進入