2013-11-22 209 views
8

我在ASP.NET網站上設置了自定義錯誤頁面。IIS自定義錯誤未顯示自定義錯誤頁面

有一個錯誤是沒有顯示自定義錯誤頁面,只是顯示了通常的黃色ASP.NET錯誤頁面。如果自定義錯誤打開,它會顯示「服務器錯誤在/應用程序」/「運行時錯誤」,但如果自定義錯誤關閉,它會顯示「驗證視圖狀態失敗」錯誤。

我的web.config的有關部分是:

<system.web> 
    <compilation debug="false" targetFramework="4.0" /> 
    <customErrors mode="On" redirectMode="ResponseRewrite"> 
     <error statusCode="404" redirect="/404.aspx" /> 
     <error statusCode="500" redirect="/500.aspx" /> 
    </customErrors> 

<system.webServer> 
    <httpErrors errorMode="DetailedLocalOnly" /> 

要捕獲這個錯誤我必須使用不同的狀態碼或substatuscode還是有別的原因呢?

注意: Server 2008 R2,IIS 7.

+0

CustomErrors具有defaultRedirect屬性。嘗試將其設置爲500.aspx。 – Mark

+0

嗨@Mark,我確實嘗試過,但沒有任何區別。謝謝。 – johna

+0

它實際上是'DetailedLocalOnly'的最後一行,它會阻止顯示您的自定義頁面。 – Marc

回答

13

經過深入研究,我發現這意味着IIS顯示錯誤而不是ASP.NET。

我更改了web.config的system.webServer部分,所以IIS也可以使用自定義錯誤頁面並解決了問題。

<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="500" subStatusCode="-1" responseMode="ExecuteURL" path="/500.aspx" /> 
    </httpErrors> 
+0

我在實施「Owin」中間件時遇到了同樣的問題 – Ramakrishna