2012-11-06 54 views
0

我得按照我的web.config:爲什麼我的.Net自定義錯誤處理一直工作?

<compilation defaultLanguage="vb" debug="false" targetFramework="4.0"/> 
<customErrors mode="On" defaultRedirect="~/error.html"/> 

它工作正常,顯示我的自定義錯誤頁,對於標準的錯誤(如頁面的崩潰/請求不存在)。但是,它未能對下列具體要求,並公開調試信息:

https://mywebsite/Page.aspx?error=<iframe> 

如何捕捉所有情況,包括這些?返回

錯誤頁面是:

Server Error in '/' Application. 

Runtime Error 

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine. 

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off". 

<!-- Web.Config Configuration File --> 

<configuration> 
    <system.web> 
     <customErrors mode="Off"/> 
    </system.web> 
</configuration> 

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL. 

<!-- Web.Config Configuration File --> 

<configuration> 
    <system.web> 
     <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/> 
    </system.web> 
</configuration> 
+0

你得到了什麼錯誤信息? –

+0

Argh。試圖粘貼它,但它堅持砍掉代碼示例,只顯示無用的描述... –

+0

困惑,爲什麼我看到該錯誤頁面,當它清楚地表明,設置defaultRedirect將導致我看到而不是我自己的錯誤頁面。特別是因爲我的自定義錯誤頁面適用於*大多數*錯誤... –

回答

3

BTW,如果你使用的是IIS 7

考慮以下幾點:

1)<httpErrors>

<httpErrors>配置錯誤IIS本身的頁面,在Web應用程序之外。這處理所有請求,無論它們實際上是由ASP.NET還是本地處理的。

例如:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear /> 
    <error statusCode="500" path="/Errors/500.aspx" responseMode="ExecuteURL"/> 
    <error statusCode="404" path="/Errors/404.aspx" responseMode="ExecuteURL"/> 
</httpErrors> 

2)使用HttpResponse.TrySkipIisCustomErrors物業獲取或設置指定IIS 7.0自定義錯誤是否被禁用的值。

TrySkipIisCustomErrors屬性僅在您的應用程序託管在IIS 7.0中時使用。在IIS 7.0中以經典模式運行時,TrySkipIisCustomErrors屬性的默認值爲true。在集成模式下運行時,TrySkipIisCustomErrors屬性的默認值爲false。

+0

使用IIS 7.5並添加完美適合我們。我們的重定向目標是HTML而不是ASPX,所以比第二種方法更好。 –

+0

對於我來說,幫助這裏的關鍵是existingResponse =「替換」。沒有這一點,我的一些自定義錯誤被跳過(取決於從ASP.NET返回的內容)。謝謝。 –

相關問題