接獲同事報案,部署至測試主機的MVC網站所有存取都出現HTTP 500錯誤:

直覺啟動偵錯SOP,先用瀏覽器測試下載靜態檔案(例如:/Content/style.css),也得到HTTP 500,判斷整個Web Application都停止運作。為查看完整訊息,在web.config中加入<customErrors mode="Off" />,但遠端瀏覽錯誤訊息未變。Terminal Service連上測試機,改用本機IE用localhost連上同一網站,沒想到仍看到如上訊息畫面[謎團!],刻意錯打<customErrorsXXX …>,訊息仍相同,將整個資料夾清空,訊息還是一樣,這就神奇了~
深呼吸,福至心靈想到權限問題,檢查網站資料夾權限,果然只設給SYSTEM、Adminstrators,未加上AppPool執行身分讀取權限。補上EVERYONE權限後再測試網站便正常了。(補充:較嚴謹做法應只授權給IIS 7.5虛擬帳戶,詳細做法可參考保哥的文章)
由於權限不,IIS讀不到web.config,故加上<customErrors>及錯打<customErrorsXXX>都不生作用,倒也合理。但事後整理除錯記錄,卻發現網站資料夾缺乏權限時,本機看到的應是如下訊息:(包含非常明確確的權限不足提示,而所第一張擷圖的HTTP 500)

重新載入一次則變成另一個訊息:(也包含存取被拒提示)

二者都能明確看出權限問題。為何先前在本機看到HTTP 500畫面成了謎團,推測可能IIS或ASP.NET遭受某種神祕力量干擾,導致表現失常,因後續做過IISRESET,無法重現問題,當時也沒多想擷圖為證… 只能先歸入X檔案。