我正在運行具有自己的錯誤處理程序的應用程序。在dev環境中測試時錯誤頁面顯示正確(錯誤頁面顯示正確)。
但是生產IIS上的相同代碼,錯誤頁面被替換。 問題描述爲here。IIS 7.0不顯示自定義錯誤頁面
我只是想知道有沒有辦法在web.config文件中寫這個設置,而不是修改代碼。
我正在運行具有自己的錯誤處理程序的應用程序。在dev環境中測試時錯誤頁面顯示正確(錯誤頁面顯示正確)。
但是生產IIS上的相同代碼,錯誤頁面被替換。 問題描述爲here。IIS 7.0不顯示自定義錯誤頁面
我只是想知道有沒有辦法在web.config文件中寫這個設置,而不是修改代碼。
敬畏(+1),但另外:IIS 7在鏈接的博客文章和this MSDN article中有特殊處理。如果你在你的動作中使用HandleErrorAttribute,這已經爲你完成了。如果沒有,您需要設置:
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
...自己。
有一個在應用程序的Web.config文件中的設置來設置調試模式:
默認爲:
<customErrors mode="RemoteOnly" />
嘗試將其設置爲「Off」(注:該值區分大小寫!)
<customErrors mode="Off" />
我不知道這是否設置由IIS7尊重,但因爲你看到從部署的開發環境不同的行爲,這是我的拳頭猜測。爲了測試是否屬於這種情況,如果您有這種可能性,您可以嘗試從網絡中的其他計算機上運行您的開發應用程序。
我試過了,但沒有奏效。我還在.config文件中包含了一些服務器設置,但事實證明IIS以某種方式忽略了它們。 – 2009-08-18 20:32:37
http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors – 2013-06-16 10:08:13
事實證明,爲了強制IIS 7顯示自定義頁面,應將以下行添加到web.config文件中。
放在system.webServer節
<httpErrors errorMode="Detailed"> <!-- this is impornant -->
<!-- Some custom error pages url go here -->
</httpErrors>
我發現了<system.webServer>
部分可以讓請求通過。然後,我的應用可以顯示我的自定義頁面。您可以在Web.Config
使用這些行:
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
您還可以閱讀加長版知道What to expect from IIS7 custom error module。
這個設置的原因是什麼? – 2009-08-18 20:31:48
顯然,我不會爲微軟發言。我只能猜測他們的動機。我的猜測是用戶認爲真實的錯誤信息是「可怕的」。因此,IE中的假錯誤頁面和此功能。因此,可能是您在MVC應用程序中顯示的頁面。你只需要告訴IIS你已經提供了一個用戶友好的錯誤消息,所以它不需要打擾。 – 2009-08-18 21:18:46