IIS5和IIS6的Asp.net应用程序生命周期事件和Global.asax文件

学习于:http://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx

1. Asp.net应用程序生命周期事件和Global.asax文件

在应用程序的生命周期期间,应用程序会引发可处理的事件并调用可重写的特定方法。若要处理应用程序事件或方法,可以在应用程序根目录中创建一个名为 Global.asax 的文件。

如果创建了Global.asax文件,ASP.NET会将其编译为从HttpApplication类派生的类,然后使用该派生类表示应用程序。

public class Global : System.Web.HttpApplication
{
    //...
}


通过使用命名约定Application_event(如 Application_BeginRequest),ASP.NET可在Global.asax文件中将应用程序事件自动绑定到处理程序。其实Global.asax类中的这些事件都是HttpModule事件。有时,可能Global.asax中的事件不是我们想要的,那么我们可以创建一个IHttpModule接口的实现类,并在该类中将自己的功能代码通过以HttpModule的方式注入到HttpApplication相应的事件上,最后在Web.config文件中作配置即可

HttpApplication进程的一个实例每次只处理一个请求,

Application_Start  和 Application_End 方法同 HttpApplication其他事件不同,在应用程序域的整个生命周期期间,ASP.NET仅调用这两个方法一次,而不是对每个HttpApplication实例都调用一次,也就是说在应用程序域的整个生命周期期间,会有多个HttpApplication实例,且HttpApplication实例是可以重用的,当HttpRuntime不能从HttpApplicationFactory获取空闲的实例时,才会去新建该实例

下表列出在应用程序生命周期期间使用的一些事件和方法。实际远不止列出的这些事件,但这些事件是最常用的。

2. 编译生命周期

在第一次对应用程序发出请求时,ASP.NET按特定顺序编译应用程序项。要编译的第一批项称为顶级项。在第一次请求之后,仅当依赖项更改时才会重新编译顶级项。下表描述编译 ASP.NET 顶级项的顺序。

在编译应用程序的顶级项之后,ASP.NET 将根据需要编译文件夹、页和其他项。下表描述编译 ASP.NET 文件夹和项的顺序。

编译后的程序集缓存在服务器上并在后续请求时被重用,并且只要源代码未更改,就会在应用程序重新启动之间得到保留。
由于应用程序在第一次请求时进行编译,所以对应用程序的初始请求所花的时间会明显长于后续请求。可以预编译应用程序以减少第一次请求所需的时间。

posted on 2013-01-31 22:23  Gcam  阅读(422)  评论(0编辑  收藏  举报

导航