C# Application_Error事件
C#语言还是比较常见的东西,这里我们主要介绍C# Application_Error事件,包括介绍Page_Error 事件等方面。
与 Page_Error 事件相类似,您可使用 C# Application_Error事件捕获发生在应用程序中的错误。由于事件发生在整个应用程序范围内,因此您可记录应用程序的错误信息或处理其他可能发生的应用程序级别的错误。
下面的示例基于前面的 Page_Error 事件代码示例,如果 Page_Load 事件中的错误未在 Page_Error 事件中捕获,将引发异常。C# Application_Error事件在应用程序的 Global.asax 文件中进行指定。为简单起见,本节中的步骤创建一个要在其中引发异常的新页,捕获 Global.asax 文件的 C# Application_Error事件中的错误,并将该错误写入事件日志中。
下面的步骤演示如何使用 C# Application_Error事件:
将名为 AppEvent.aspx 的新文件添加到项目中,将以下代码添加到 AppEvent.aspx 中,从文件菜单中,单击保存 AppEvent.aspx。将 Application_Error 事件添加到 Global.asax 文件中以捕获在 AppEvent.aspx 页的 Page_Load 事件中引发的错误。注意,您必须为 System.Diagnostics 名称空间将另一条 using 语句添加到 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 中,在生成菜单上,单击生成。右键单击该页,然后单击在浏览器中查看。在这种情况下该页将为空白,但是您应该注意到在事件日志中已添加了一个新项。本示例在应用程序日志中生成一个项,可从事件查看器访问应用程序日志。在记录错误之后,您可能希望将用户重定向到另一个更用户友好的错误页或者根据需要执行一些其他操作。
如果您不调用 Server.ClearError 或者捕获 Page_Error 或 C# Application_Error事件中的错误,则将根据 Web.config 文件的 部分中的设置处理错误。在 部分,可将重定向页指定为默认的错误页 (defaultredirect) 或者根据引发的 HTTP 错误代码指定特定页。您可使用此方法自定义用户收到的错误信息。