zoukankan      html  css  js  c++  java
  • HttpModule内部事件机制和生命周期

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

    一.HttpModule的事件

    BeginRequest     指示请求处理开始

    AuthenticateRequest     封装请求身份验证过程

    AuthorizeRequest     封装检查是否能利用以前缓存的输出页面处理请求的过程

    ResolveRequestCache     从缓存中得到相应时候触发

    AcquireRequestState     加载初始化Session时候触发

    PreRequestHandlerExecute     在Http请求进入HttpHandler之前触发

    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事件。如图:

     

  • 相关阅读:
    Android之Wifi使用
    Android之浮动小窗口
    Android之Socket的基于UDP传输
    Android之基本常见知识(持续更新)
    Android之打开闪光灯关键代码
    Android之Oauth验证(一)
    Android之WebView简易应用
    Android之短信广播接收内容
    Google HTML/CSS 代码风格指南
    几个 HTML 标签的用法
  • 原文地址:https://www.cnblogs.com/AngelLee2009/p/2223014.html
Copyright © 2011-2022 走看看