ASP.NET应用处理流程
第一次在访问ASP.NET页面时,服务器端将创建HttpApplication的一个新实例。不过,为了尽可能提高性能,可对多个请求重复使用HttpApplication实例。见下图的处理流程图:
如果应用程序中包含有Global.asax文件,则 ASP.NET 会创建Global.asax类。Global.asax中包含了响应 应用程序级别和会话级别事件的代码。一个典型的Global.asax文件例子如下:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码
}
默认情况下,ASP.NET 自动绑定了这些处理程序到相应的应用或会话事件上。应用启动时将触发Application_Start事件处理,客户端访问页面发起会话,将触发Session_Start事件处理,关闭页面结束会话将会触发Session_End事件处理,关闭或重启Web服务器将触发Application_End事件处理。
我们可以在这些处理程序中插入代码,以在应用程序启动、关闭或者会话启动、结束时执行要求的功能。我们将通过一个实际的例子来展示应用程序的处理流程。
修改global.aspx.cs代码,配合站点访问统计的页面,查看输出,来了解ASP.NET 应用处理的具体流程中各个事件的处理时机。