<code id="1md5v"></code>

      <nav id="1md5v"><video id="1md5v"><span id="1md5v"></span></video></nav>

    1. <code id="1md5v"></code>

      <th id="1md5v"></th>
      <big id="1md5v"><em id="1md5v"><track id="1md5v"></track></em></big>

      新闻建站cms系统、政府cms系统定制开发

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

      asp.net新闻发布系统、报纸数字报系统方案
      /
      http://www.recruitment-bg.com/
      广州网站建设公司
      您当前位置:首页>网站技术

      网站技术

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

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

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

      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新闻系统购买咨询
      扫描关注 广州阅速软件科技有限公司
      扫描关注 广州阅速科技
      无码少妇一区二区浪潮AV_久久99精品国产自在现线小黄鸭_无码A级毛片免费视频内谢_久久久久久久精品免费久精品蜜桃