如何:创建 ASP.NET 应用程序级别的事件处理程序
更新:2007 年 11 月
ASP.NET 自动使用 Application_event 的命名约定(如 Application_BeginRequest 和 Application_Error)将应用程序事件绑定到 Global.asax 文件中的事件处理程序方法。有关更多信息,请参见 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述。
此代码示例处理应用程序级别的 Error 事件,并将错误信息写入系统事件日志中。只要出现应用程序错误或未处理的页错误,就会引发 Error 事件。
创建 ASP.NET 应用程序级别的事件处理程序
如果网站还没有 Global.asax 文件,请在该站点的根目录下创建一个这样的文件。
创建一个事件处理程序方法,其名称遵循 Application_event 模式。例如,若要处理应用程序 Error 事件,请创建名为 Application_Error 的处理程序,此处理程序采用 Object 参数和 EventArgs 参数。
示例
下面的代码示例显示了 Global.asax 文件中用于 Error 事件的处理程序。只要应用程序中的任何位置发生未处理的异常,都会调用该示例中的处理程序。当在 try/catch 块中捕捉到异常或者由页对象的 Error 事件捕捉到异常时,应用程序将不会引发 Error 错误。
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' check to see if the ASPNETApplication log exists
If Not System.Diagnostics.EventLog. _
SourceExists("ASPNETApplication") Then
System.Diagnostics.EventLog. _
CreateEventSource("ASPNETApplication", "Application")
End If
System.Diagnostics.EventLog. _
WriteEntry("ASPNETApplication",
Server.GetLastError().Message)
End Sub
void Application_Error(Object sender, EventArgs e)
{
if(!System.Diagnostics.EventLog.SourceExists
("ASPNETApplication"))
{
System.Diagnostics.EventLog.CreateEventSource
("ASPNETApplication", "Application");
}
System.Diagnostics.EventLog.WriteEntry
("ASPNETApplication",
Server.GetLastError().Message);
}
这段代码向系统事件日志中写入一项。代码将会先进行检查,以确定是否存在名为 ASPNETApplication 的事件日志项;如果不存在,代码会创建它。这段代码通过调用 GetLastError 方法获取与错误关联的错误信息,然后将这条错误信息写入该日志中。
安全性
此代码示例要求应用程序具有访问系统事件日志的权限。有关使用系统事件日志的更多信息,请参见 如何:写入应用程序事件日志。
请参见
概念
IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述