C# Application_Error事件
C#語(yǔ)言還是比較常見(jiàn)的東西,這里我們主要介紹C# Application_Error事件,包括介紹Page_Error 事件等方面。
與 Page_Error 事件相類似,您可使用 C# Application_Error事件捕獲發(fā)生在應(yīng)用程序中的錯(cuò)誤。由于事件發(fā)生在整個(gè)應(yīng)用程序范圍內(nèi),因此您可記錄應(yīng)用程序的錯(cuò)誤信息或處理其他可能發(fā)生的應(yīng)用程序級(jí)別的錯(cuò)誤。
下面的示例基于前面的 Page_Error 事件代碼示例,如果 Page_Load 事件中的錯(cuò)誤未在 Page_Error 事件中捕獲,將引發(fā)異常。C# Application_Error事件在應(yīng)用程序的 Global.asax 文件中進(jìn)行指定。為簡(jiǎn)單起見(jiàn),本節(jié)中的步驟創(chuàng)建一個(gè)要在其中引發(fā)異常的新頁(yè),捕獲 Global.asax 文件的 C# Application_Error事件中的錯(cuò)誤,并將該錯(cuò)誤寫(xiě)入事件日志中。
下面的步驟演示如何使用 C# Application_Error事件:
將名為 AppEvent.aspx 的新文件添加到項(xiàng)目中,將以下代碼添加到 AppEvent.aspx 中,從文件菜單中,單擊保存 AppEvent.aspx。將 Application_Error 事件添加到 Global.asax 文件中以捕獲在 AppEvent.aspx 頁(yè)的 Page_Load 事件中引發(fā)的錯(cuò)誤。注意,您必須為 System.Diagnostics 名稱空間將另一條 using 語(yǔ)句添加到 Global.asax,才能使用事件日志。
將以下代碼添加到 Global.asax 文件中:
- using System.Diagnostics;
- protected void Application_Error(object sender, EventArgs e)
- {
- Exception objErr = Server.GetLastError().GetBaseException();
- string err ="Error Caught in Application_Error event\n" +
- "Error in:" + Request.Url.ToString() +
- "\nError Message:"+ objErr.Message.ToString() +
- "\nStack Trace:"+ objErr.StackTrace.ToString();
- EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
- Server.ClearError();
- //additional actions...
- }
保存 Global.asax 文件。在 Visual Studio .NET 中,在生成菜單上,單擊生成。右鍵單擊該頁(yè),然后單擊在瀏覽器中查看。在這種情況下該頁(yè)將為空白,但是您應(yīng)該注意到在事件日志中已添加了一個(gè)新項(xiàng)。本示例在應(yīng)用程序日志中生成一個(gè)項(xiàng),可從事件查看器訪問(wèn)應(yīng)用程序日志。在記錄錯(cuò)誤之后,您可能希望將用戶重定向到另一個(gè)更用戶友好的錯(cuò)誤頁(yè)或者根據(jù)需要執(zhí)行一些其他操作。
如果您不調(diào)用 Server.ClearError 或者捕獲 Page_Error 或 C# Application_Error事件中的錯(cuò)誤,則將根據(jù) Web.config 文件的 部分中的設(shè)置處理錯(cuò)誤。在 部分,可將重定向頁(yè)指定為默認(rèn)的錯(cuò)誤頁(yè) (defaultredirect) 或者根據(jù)引發(fā)的 HTTP 錯(cuò)誤代碼指定特定頁(yè)。您可使用此方法自定義用戶收到的錯(cuò)誤信息。
【編輯推薦】