2009-08-18 61 views
13

我正在運行具有自己的錯誤處理程序的應用程序。在dev環境中測試時錯誤頁面顯示正確(錯誤頁面顯示正確)。
但是生產IIS上的相同代碼,錯誤頁面被替換。 問題描述爲hereIIS 7.0不顯示自定義錯誤頁面

我只是想知道有沒有辦法在web.config文件中寫這個設置,而不是修改代碼。

回答

13

敬畏(+1),但另外:IIS 7在鏈接的博客文章和this MSDN article中有特殊處理。如果你在你的動作中使用HandleErrorAttribute,這已經爲你完成了。如果沒有,您需要設置:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; 

...自己。

+0

這個設置的原因是什麼? – 2009-08-18 20:31:48

+2

顯然,我不會爲微軟發言。我只能猜測他們的動機。我的猜測是用戶認爲真實的錯誤信息是「可怕的」。因此,IE中的假錯誤頁面和此功能。因此,可能是您在MVC應用程序中顯示的頁面。你只需要告訴IIS你已經提供了一個用戶友好的錯誤消息,所以它不需要打擾。 – 2009-08-18 21:18:46

4

有一個在應用程序的Web.config文件中的設置來設置調試模式:

默認爲:

<customErrors mode="RemoteOnly" /> 

嘗試將其設置爲「Off」(注:該值區分大小寫!)

<customErrors mode="Off" /> 

我不知道這是否設置由IIS7尊重,但因爲你看到從部署的開發環境不同的行爲,這是我的拳頭猜測。爲了測試是否屬於這種情況,如果您有這種可能性,您可以嘗試從網絡中的其他計算機上運行您的開發應用程序。

+0

我試過了,但沒有奏效。我還在.config文件中包含了一些服務器設置,但事實證明IIS以某種方式忽略了它們。 – 2009-08-18 20:32:37

+0

http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors – 2013-06-16 10:08:13

8

事實證明,爲了強制IIS 7顯示自定義頁面,應將以下行添加到web.config文件中。

放在system.webServer節

<httpErrors errorMode="Detailed"> <!-- this is impornant --> 
<!-- Some custom error pages url go here --> 
</httpErrors> 
1

我發現了<system.webServer>部分可以讓請求通過。然後,我的應用可以顯示我的自定義頁面。您可以在Web.Config使用這些行:

<system.webServer> 
    <httpErrors existingResponse="PassThrough" /> 
</system.webServer> 

您還可以閱讀加長版知道What to expect from IIS7 custom error module

相關問題