都知道当请求进入到asp.net中后,会经历一个管道。而关于这个管道,有两个很重要的对象:HttpModule和HttpHandler。其中HttpModule就像是个过滤器一样。当请求到达某个过滤器时,就会触发.net的相关事件。而我们程序员就可以往这一个个的过滤器中添加事件,从而进行相应的处理。而对于HttpHandler其实是对消息的处理(和HttpModule是不一样的)。对于不同的请求,会响应不同的HttpHandler。比如.aspx页对应的HttpHandler为System.Web.UI.Page,WCF的.svc文件对应的HttpHandler为System.ServiceModel.Activation.HttpHandler(这些是动态网页,静态网页直接在IIS上直接返回了。没有进入到托管环境中。)。
前言:在管线中注册了httpmodule等事件并不代表事件起作用,还要创建HttpApplication处理事件
HttpApplication的事件处理程序:
1.通过IHttpModule创建:每当创建一个HttpApplication对象。都会遍历注册的HttpModule类型,并通过其Init方法,将HttpApplication对象传过去。
a:使用配置文件注册IHttpModule
b:通过特性,在项目的程序集中增加PreApplicationStartMethod特性来完成注册
2.通过在global.asax中自动创建HttpApplication处理事件(HttpApplicatiuon继承自global.asax类)
而在global.asax中有5个自动生成的事件Application_Start、Application_End、Application_Error。。。。这几个事件并不属于HttpApplicatiuon管道事件。
参考连接:https://www.cnblogs.com/liangxiaofeng/p/5628878.html#undefined