2011-08-29 52 views
1

我一直在閱讀頁面和應用程序級別的陷阱.Net錯誤,無法確定我想要做什麼最好的套件。 我想要的只是一個基本的重定向到一個頁面,告訴用戶一個錯誤已經發生,無論錯誤或其頁面發生了什麼(還會有一些日誌記錄)。 這應該是應用程序級別嗎?應用程序級別的.NET錯誤陷阱?

謝謝

+0

難道你不想記錄這些錯誤,所以你有關於這些錯誤的細節? – Steven

回答

1

您可以將customErrors屬性添加到web.config中。它會重定向到錯誤的指定頁面:

<system.web> 
    <customErrors defaultRedirect="~/ErrorGeneric.html" mode="RemoteOnly"> 
     <error statusCode="500" redirect="~/Error500.html"/> 
     <error statusCode="404" redirect="~/Error404.html"/> 
    </customErrors> 
<system.web> 

此外,配置一個日誌框架,可以幫助您存儲錯誤信息以供日後分析。這裏有幾個框架:ELMAH,log4netCuttingEdge.Logging。我建議你使用這些框架中的一個,而不是在Application_Error事件中自行擺弄並編寫日誌功能。

+0

謝謝你們 - 那是我排序的 – DarkW1nter

+0

這和我的回答完全一樣,只是我告訴你使用IIS管理控制檯,因爲它比直接在Web.config中編輯更簡單,IIS管理控制檯編輯web.config爲你。 – 2011-08-29 13:40:57

0

請參閱Internet Information Server(IIS 7)中的.NET錯誤頁面功能。在這裏,您可以爲不同的HTTP錯誤添加不同的錯誤頁面。使用HTTP錯誤代碼拋出HTTP錯誤代碼,您需要爲您的錯誤http://msdn.microsoft.com/en-us/library/bazc3hww.aspx

+0

會這樣做,謝謝 – DarkW1nter

0

是的,您可以通過捕獲Global.asax中的Application_Error事件來執行此操作。這是從MSDN的例子:

void Application_Error(object sender, EventArgs e) 
{ 
    // Get the exception object. 
    Exception exc = Server.GetLastError(); 

    // Handle HTTP errors 
    if (exc.GetType() == typeof(HttpException)) 
    { 
     //Redirect HTTP errors to HttpError page 
     Server.Transfer("HttpErrorPage.aspx"); 
    } 
    // For other kinds of errors give the user some information 
    // Log the exception and notify system operators 
    // Clear the error from the server 
    Server.ClearError(); 
} 

爲完整的例子見this page,以及關於這個問題的一些一般性建議。