2008-09-24 17 views

回答

6

我建議使用在web.config中的customErrors部分:

<customErrors mode="RemoteOnly" defaultRedirect="/error.html"> 
     <error statusCode="403" redirect="/accessdenied.html" /> 
     <error statusCode="404" redirect="/pagenotfound.html" /> 
    </customErrors> 

,然後使用ELMAH電子郵件和/或記錄錯誤。

0

我想你可以使用的Global.asax - Application_Exception處理程序來捕獲異常,然後將其存儲在一個錯誤頁面顯示。

但實際上,您的錯誤頁面不應該包含可能會導致另一個錯誤的代碼。它應該很簡單,「糟糕!出錯了」頁面。

如果您想了解有關錯誤的詳細信息,請使用Windows的事件查看器或ELMAH或採用某種日誌記錄機制。

+0

我討厭「糟糕!出事了」,充滿激情。在錯誤報告頁面周圍應該有一些微不足道的錯誤處理,最終可能會級聯到「Oops」頁面,但是如果到達該Oops頁面,則什麼都不應該運行。我想同時告訴智能手機的編碼人員以及其他任何人對此有罪和虛假的行爲。 – 2009-05-31 22:50:43

+0

@ stimpy77這取決於...有時候這就是事件日誌和ELMAH的用途......而錯誤頁面只是讓用戶失望而已。 – chakrit 2009-06-02 10:43:20

1

使用asp.net中自定義錯誤頁,你可以在web.config中customError部分中找到它

2

我使用的模式是記錄錯誤在try/catch塊(使用log4net的) ,然後做一個response.redirect到一個簡單的錯誤頁面。這假定你不需要顯示任何錯誤細節。

如果您需要單獨頁面上的異常詳細信息,則可能需要查看Server.GetLastError。我在global.asax(在Application_Error事件中)使用它記錄未處理的異常並重定向到錯誤頁面。

2

我們已經在Global.asax Application_Error事件中捕獲異常,將它們存儲在會話中,並重定向到我們的錯誤頁面。或者,您可以編碼錯誤消息並將其傳遞到querystring中的錯誤頁面。

2

您也可以從

Server.GetLastError(); 
1

例外,我們捕捉到Global.asax文件的例外,它存儲在會話,用戶然後被重定向到錯誤頁面,我們抓住了我們的例外會話變量並將消息信息顯示給用戶。

protected void Application_Error(object sender, EventArgs e) 
    { 
     Exception ex = Server.GetLastError(); 
     this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex; 
    } 

我們會在顯示用戶之前記錄錯誤信息。

相關問題