
上QQ阅读APP看书,第一时间看更新
2.3.1 通过IHttpModule创建HttpApplication的事件处理程序
在ASP.NET中,定义在System.Web命名空间下的IHttpModule接口专门用来定义HttpApplication对象的事件处理。
实现IHttpModule接口的类称为HttpModule。IHttpModule接口的定义如下,其中仅仅包含两个成员:
public interface IHttpModule { void Dispose() void Init(HttpApplication context) }
其中,Dispose方法用于回收Module所使用的非托管资源,如果没有的话,直接返回即可。
最重要的是Init方法,可以看到,这个方法接收一个HttpApplication类型的参数,在ASP.NET中,每当创建一个HttpApplication对象实例,将遍历注册的HttpModule类型,通过反射,依次创建每个注册HttpModule类型的一个实例对象,并将这个HttpApplication实例通过Init方法传递给各个HttpModule,这样HttpModule就可以在第一时间完成针对HttpApplication对象的事件注册了。
例如,希望写一个处理 PostAuthenticateRequest事件的HttpModule,那么,可以如下完成事件的注册:
public void Init(System.Web.HttpApplication application) { application.PostAuthenticateRequest += new EventHandler(Application_PostAuthenticateRequest); }