--------------------------校验:_____________-----------------------日期:_____________温故而知新:HttpApplication,HttpModule,页生命周期 注1ContextModules-->影响当前应用程序的HttpModule模块集合Session-->类似于asp中的Session对象User-->用于获取用户认证相关的安全信息 HttpApplication类除了具备"注1"的几个属性外,还有自己的方法,这里特别提一下Init方法和Dispose方法,这二个方法均可重载. 它们的调用时机为: 除了Application_Start和Application_End方法,HttpApplication还提供了以下事件: viewsourceprint?lass 再来看一下相对asp而言,新增的Context,Modules,User这三个属性 Context:Context即HttpContext类的实例,在几乎整个aspx页面生命周期中,Context上下文一直伴随着各个环节向下传递回想一下:viewsourceprint?lassHandler1:IHttpHandler02 {03 04 publicvoidProcessRequest(HttpContextcontext)05 {060708 }09 10 publicboolIsReusable11 {12 get13 {14 returnfalse;15 }16 }17 }我们在使用一个ashx文件时,ProcessRequest方法便是把当前上下文传递进来,进而通过context得到Response对象的引用,最终可以向页面输出任何想要的内容. Modules:每一个实现了IHttpModule接口的类,就可以被认为是Http模块组件,可以理解为http请求拦截器,拦截到http请求后,它能修改正在被处理的Context上下文,完事儿之后,再把控制权交还给管道,如果还有其它模块,则依次继续处理,直到所有Modules集合中的HttpModule都“爽”完为止(注:可怜的http请求就这样给各个httpModule轮X了)注2AnonymouseIdentification--为匿名用户分配一个临时身份FileAuthorization--验证用户是否有请求文件的WindowsNT许可OutputCache--输出缓存模块PassportAuthentication--PassPort验证模块RoleManager--角色管理SessionSate--会话状态模块UrlAuthorization--基于URL的身份验证模块WindowsAuthentication--Windows和IIS身份验证模块 User:viewsourceprint?1if2{34}我们常用它来判断当前浏览用户的登录状态,关于User类的更详细定义,可参见MSDN生命周期:总体上讲:一个ASPX页面被请求时,最终的生命周期就是由Page中定义的上述事件(还有一些可重载的回调方法)以及以前提到的HttpApplication类中定义的事件(以相应的回调方法)共同触发或调用,最终叠加形成的一连串处理过程。这是在Page页面未回发,且不考虑页面子控件的前提下正常的顺序,如果加入页面回发(比如在页面中放一个asp:Button,然后在Button的Click回发事件中加入处理函数)后,顺序稍微有些变化:不同的地方在于:-03-2815:01:39413 Application_Start2010-03-2815:01:39491 Init2010-03-2815:01:39491 Application_BeginRequest2010-03-2815:01:39506 Application_AuthenticateRequest2010-03-2815:01:39506 Application_PostAuthenticateRequest2010-03-2815:01:39506 Application_AuthorizeRequest2010-03-2815:01:39522 Application_PostAuthorizeRequest2010-03-2815:01:39522 Application_ResolveRequest
温故而知新:HttpApplication,HttpModule,页生命周期 来自淘豆网m.daumloan.com转载请标明出处.