联系我们
cms新闻网站系统、政府cms定制开发

广州网站建设公司-阅速公司

报纸新媒体网站内容发布一体化解决方案联系电话
/
http://www.ysneo.com/
广州网站建设公司
您当前位置:首页>网站技术

网站技术

Http Request在整个HttpModule中的生命周期图

发布时间:2021/12/7 15:43:54  作者:Admin  阅读:72  

广告:阿里云采购优惠专区

HttpModule对HttpApplication实例进行处理,而HttpApplication有很多事件(对应不同的生命周期),这样就衍生出HttpModule内部事件机制和生命周期。

一.HttpModule的事件

BeginRequest 指示请求处理开始
AuthenticateRequest 封装请求身份验证过程
AuthorizeRequest 封装检查是否能利用以前缓存的输出页面处理请求的过程
ResolveRequestCache 从缓存中得到相应时候触发
--------- 建立HttpHandler控制点, 接着处理(HttpHandler已经建立,此后Session可用)--------
AcquireRequestState 加载初始化Session时候触发
PreRequestHandlerExecute 在Http请求进入HttpHandler之前触发
HttpHandler.ProcessRequest()
--------- 返回到HttpModule接着处理(HttpHandler生命周期结束,Session失效)--------
PostRequestHandlerExecute 在Http请求进入HttpHandler之后触发
ReleaseRequestState 存储Session状态时候触发
UpdateRequestCache 更新缓存信息时触发
EndRequest 在Http请求处理完成的时候触发
PreSendRequestHenaders 在向客户端发送Header之前触发
PreSendRequestConternt 在向客户端发送内容之前触发
------------将处理后的数据返回客户端-------------

说明:
a.BeginRequest和EndRequest分别是HttpModule容器最开始的的和最后的事件;
b.EndRequest之后还会触发PreSendRequestHeaders事件和PreSendRequestContent事件,这不是在HttpModule外的两个事件,表示 HttpModule结束,即将开始向Client发送数据。

二.验证HttpModule生命周期
说明:

a.HttpModule容器会将HttpRequest传送到HttpHandler容器,这个时间点是ResolveRequestCache事件;
b.HttpModule容器会建立HttpHandler实例作为入口—Session从此生效;
c.触发AcquireRequestState事件以及PreRequestHandlerExecute事件;
d.HttpModule容器便将对HttpRequest的控制权限转让给HttpHandler容器;
e.HttpModule容器处理HttpRequest—使用自身的ProcessRequest方法,将对其控件权又还给HttpModule容器—之后Session失效。

三.利用HttpModule实现终止此次HttpRequest请求

在BeginRequest事件中,使用HttpApplication.CompleteRequest()方法,可以实现当满足一定条件时终止此次HttpRequest请求。
Application.CompleteRequest();
说明 :
a.对于一个HttpModule,在BeginRequest中终止,但是仍然会调用EndRequest事件,以及PreSendRequestHeaders事件和PreSendRequestContent事件。也可以说是直接跳转到EndRequest事件,而不会调用这期间的事件;
b.如果有两个HttpModule,在第一个HttpModule的BeginRequest中终止,仅仅不会调用第二个HttpModule的BeginRequest,但仍然会调用两个EndRequest事件,以及PreSendRequestHeaders事件和PreSendRequestContent事件。

广告:阿里云新人采购专场

相关文章
HttpModule
cms新闻系统购买咨询
扫描关注 广州阅速软件科技有限公司
扫描关注 广州阅速科技