我一直在閱讀頁面和應用程序級別的陷阱.Net錯誤,無法確定我想要做什麼最好的套件。 我想要的只是一個基本的重定向到一個頁面,告訴用戶一個錯誤已經發生,無論錯誤或其頁面發生了什麼(還會有一些日誌記錄)。 這應該是應用程序級別嗎?應用程序級別的.NET錯誤陷阱?
謝謝
我一直在閱讀頁面和應用程序級別的陷阱.Net錯誤,無法確定我想要做什麼最好的套件。 我想要的只是一個基本的重定向到一個頁面,告訴用戶一個錯誤已經發生,無論錯誤或其頁面發生了什麼(還會有一些日誌記錄)。 這應該是應用程序級別嗎?應用程序級別的.NET錯誤陷阱?
謝謝
您可以將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,log4net,CuttingEdge.Logging。我建議你使用這些框架中的一個,而不是在Application_Error
事件中自行擺弄並編寫日誌功能。
謝謝你們 - 那是我排序的 – DarkW1nter
這和我的回答完全一樣,只是我告訴你使用IIS管理控制檯,因爲它比直接在Web.config中編輯更簡單,IIS管理控制檯編輯web.config爲你。 – 2011-08-29 13:40:57
請參閱Internet Information Server(IIS 7)中的.NET錯誤頁面功能。在這裏,您可以爲不同的HTTP錯誤添加不同的錯誤頁面。使用HTTP錯誤代碼拋出HTTP錯誤代碼,您需要爲您的錯誤http://msdn.microsoft.com/en-us/library/bazc3hww.aspx
會這樣做,謝謝 – DarkW1nter
是的,您可以通過捕獲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,以及關於這個問題的一些一般性建議。
難道你不想記錄這些錯誤,所以你有關於這些錯誤的細節? – Steven