HttpApplication 类
定义 ASP.NET 应用程序中的所有应用程序对象通用的方法、属性和事件。此类是用户在 global.asax 文件中所定义的应用程序的基类。

HttpApplication 类的实例是在 ASP.NET 基础结构中创建的,而不是由用户直接创建的。

HttpApplication 类的一个实例在其生存期内被用于处理多个请求,但它一次只能处理一个请求。这样,成员变量才可用于存储针对每个请求的数据。

应用程序按照以下顺序执行由 global.asax 文件中定义的模块或用户代码处理的事件:

1.BeginRequest

在 ASP.NET 响应请求时作为 HTTP 执行管线链中的第一个事件发生。

BeginRequest 事件发出信号表示创建任何给定的新请求。此事件始终被引发,并且始终是请求处理期间发生的第一个事件。

2.AuthenticateRequest

当安全模块已建立用户标识时发生。

AuthenticateRequest 事件发出信号表示配置的身份验证机制已对当前请求进行了身份验证。预订 AuthenticateRequest 事件可确保在处理附加的模块或事件处理程序之前对请求进行身份验证。

3.PostAuthenticateRequest

当安全模块已建立用户标识时发生。

PostAuthenticateRequest 事件在 AuthenticateRequest 事件发生之后引发。预订 PostAuthenticateRequest 事件的功能可以访问由 PostAuthenticateRequest 处理的任何数据。

4.AuthorizeRequest

当安全模块已验证用户授权时发生。

AuthorizeRequest 事件发出信号表示 ASP.NET 已对当前请求进行了授权。预订 AuthorizeRequest 事件可确保在处理附加的模块或事件处理程序之前对请求进行身份验证和授权。

5.PostAuthorizeRequest

在当前请求的用户已获授权时发生。

PostAuthorizeRequest 事件发出信号表示 ASP.NET 已对当前请求进行了授权。预订 PostAuthorizeRequest 事件可确保在处理附加的模块或处理程序之前对请求进行身份验证和授权。

6.ResolveRequestCache

当 ASP.NET 完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过事件处理程序(例如某个页或 XML Web services)的执行。

7.PostResolveRequestCache

在 ASP.NET 跳过当前事件处理程序的执行并允许缓存模块满足来自缓存的请求时发生。

在 PostResolveRequestCache 事件之后、PostMapRequestHandler 事件之前创建一个事件处理程序(对应于请求 URL 的页)。

8.PostMapRequestHandler

9.AcquireRequestState

当 ASP.NET 获取与当前请求关联的当前状态(如会话状态)时发生。

AcquireRequestState 事件在创建了事件处理程序之后引发。

10.PostAcquireRequestState

在已获得与当前请求关联的请求状态(例如会话状态)时发生。

PostAcquireRequestState 事件在 AcquireRequestState 事件发生之后引发。预订 AcquireRequestState 事件的功能可以访问由 PostAcquireRequestState 处理的任何数据。

11.PreRequestHandlerExecute

恰好在 ASP.NET 开始执行事件处理程序(例如,某页或某个 XML Web service)前发生。

执行事件处理程序。

12.PostRequestHandlerExecute

在 ASP.NET 事件处理程序(例如,某页或某个 XML Web service)执行完毕时发生。

13.ReleaseRequestState

在 ASP.NET 执行完所有请求事件处理程序后发生。该事件将使状态模块保存当前状态数据。

引发 ReleaseRequestState 事件以后,应用程序以该请求结束,并发出 ASP.NET 信号以存储该请求状态。

14.PostReleaseRequestState

在 ASP.NET 已完成所有请求事件处理程序的执行并且请求状态数据已存储时发生。

在 PostReleaseRequestState 事件之后,响应筛选器(如果有)将对输出进行筛选。

15.UpdateRequestCache

当 ASP.NET 执行完事件处理程序以使缓存模块存储将用于从缓存为后续请求提供服务的响应时发生。

16.PostUpdateRequestCache

在 ASP.NET 完成了缓存模块的更新并存储了以下响应时发生,这些响应用于满足来自缓存的后续请求。

PostUpdateRequestCache 事件在 UpdateRequestCache 事件发生之后引发。引发 PostUpdateRequestCache 以后,ASP.NET 已完成代码处理并且缓存的内容已结束。

17.EndRequest

在 ASP.NET 响应请求时作为 HTTP 执行管线链中的最后一个事件发生。

下面的两个示例演示如何使用 HttpApplication 类及其事件。第一个代码示例演示如何创建自定义 HTTP 模块以及如何将事件连接到该模块。第二代码示例演示如何修改 Web.config 文件。

下面的代码示例演示如何创建自定义 HTTP 模块并将 AcquireRequestState 事件连接到 HTTP 模块。HTTP 模块将截获对 Web 应用程序资源的所有请求,从而使您可以筛选客户端请求。预订 HttpApplication 事件的任何 HTTP 模块都必须实现 IHttpModule 接口。

using System;
using System.Web;

namespace Samples.AspNet.CS
{
    public class CustomHTTPModule : IHttpModule
    {
        public CustomHTTPModule()
        {
            // Class constructor.
        }

// Classes that inherit IHttpModule
        // must implement the Init and Dispose methods.
        public void Init(HttpApplication app)
        {

app.AcquireRequestState += new EventHandler(app_AcquireRequestState);
   app.PostAcquireRequestState += new EventHandler(app_PostAcquireRequestState);
  }

public void Dispose()
        {
            // Add code to clean up the
            // instance variables of a module.
        }

// Define a custom AcquireRequestState event handler.
        public void app_AcquireRequestState(object o, EventArgs ea)
        {
            HttpApplication httpApp = (HttpApplication)o;
            HttpContext ctx = HttpContext.Current;
            ctx.Response.Write(" Executing AcquireRequestState ");
        }

// Define a custom PostAcquireRequestState event handler.
  public void app_PostAcquireRequestState(object o, EventArgs ea)
  {
   HttpApplication httpApp = (HttpApplication)o;
   HttpContext ctx = HttpContext.Current;
   ctx.Response.Write(" Executing PostAcquireRequestState ");
  }

}
}

在自定义 HTTP 模块中的事件可以发生之前,您必须先修改 Web.config 文件中的配置设置,通知 ASP.NET 有关该 HTTP 模块的信息。下面的代码示例演示 Web.config 文件的 httpModules 节中的相应配置设置。

<configuration>
  <system.web>
    <httpModules>
      <add type="Samples.AspNet.CS.CustomHTTPModule"
           name="CustomHttpModule" />
      </httpModules>
  </system.web>
</configuration>

HttpApplication 类相关推荐

  1. HttpApplication类及派生的Global类

    从HttpApplication派生的Global 类有很多用处,包括管理应用程序状态和请求状态 Visual Studio.NET 创建的global.asax文件为每个web 应用程序生成一个从H ...

  2. HttpApplication IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable ps url System.Web.dll

    // 摘要:// 定义 ASP.NET 应用程序中的所有应用程序对象共有的方法.属性和事件.此类是用户在 Global.asax 文件中所定义的应用程序的基类.[ToolboxItem(false)] ...

  3. 温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期

    IIS在接到一个新的http请求后,最终会调用asp.net_isapi.dll的ISAPI扩展(特指IIS6.0环境,iis7.0的应用程序池默认为集成方式,相对有所变化),然后传递到httpRun ...

  4. HttpApplication 事件执行顺序

    之前做了一段ASP.NET,但都是用微软的控件在实现,并没有了解这些东西,事隔多年后,现在再做发现不能仅为功能而做功能,同事也很惭愧,对ASP.NET原理一直没弄明白,补习一下知识,在学习HttpMo ...

  5. 老生又长谈:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期

    IIS在接到一个新的http请求后,最终会调用asp.net_isapi.dll的ISAPI扩展(特指IIS6.0环境,iis7.0的应用程序池默认为集成方式,相对有所变化),然后传递到httpRun ...

  6. ASP.NET进阶(8):HttpModule和HttpApplication

    前面三节讲了控件的构造.呈现和数据绑定,我想该差不多了.本想讲一个自定义控件来终结控件部分,但是我个人不太喜欢控件这些东西,所以也就懒的写相关的内容,抱歉了.虽然我不喜欢使用控件,但我还是喜欢整个We ...

  7. HttpApplication的认识与加深理解

    HttpApplication对象是经由HttpApplicationFactory.GetApplicationInstance(并最终调用HttpRuntime.CreateNonPublicIn ...

  8. .NET笔试题集(五)

    转载于:http://www.cnblogs.com/ForEvErNoME/archive/2012/09/15/2684938.html 1.什么是受管制的代码? 答:unsafe:非托管代码.不 ...

  9. 在 ASP.NET 中执行 URL 重写

    在 ASP.NET 中执行 URL 重写 发布日期: 8/23/2004 | 更新日期: 8/23/2004 Scott Mitchell 4GuysFromRolla.com 适用范围: Micro ...

  10. ASP.NET HTTP 运行时

    ASP.NET HTTP 运行时 一个请求从 URL 字符串到 HTML 代码的"漫长曲折"之路 Dino Esposito Wintellect 2003年7月10日 摘要:本文 ...

最新文章

  1. Aidl进程间通信详细介绍
  2. 《Java程序设计》实验报告——Java的基本程序设计结构
  3. java之DocumentBuilderFactory解析xml
  4. 根据F12在页面中调整div的大小
  5. 通过VisualSVN的POST-COMMIT钩子自动部署代码
  6. 阿里开源的那个牛X的问题排查工具——Arthas,推出IDEA插件了! | 文末福利
  7. Daemon线程--《Java并发编程的艺术》学习笔记
  8. Postman系列之发送不同HTTP类型请求
  9. 排名怎么查_常见客户SEO问题解答:网站降权了应该怎么处理?
  10. 数据挖掘案例:建立客户流失模型
  11. 应试教育——人性的扼杀
  12. 动态修改spine动画渲染层次
  13. oracle显示无效的月份,Oracle插入失败:无效的月份
  14. 贪心算法——1225:金银岛
  15. 大数据实时处理:百分点实时计算架构和算法
  16. Java中Lambda表达式使用及详解
  17. 终身伴侣(两个人的网站)代码+效果演示(文末源码地址)
  18. 回望2021,展望2022-我的个人年度回顾与总结
  19. 名词解析:IP,掩码(netmask),网关(gateway),DNS?
  20. Airoha SDK UT软件分辨真假洛达1562A,洛达1562a怎么鉴别?

热门文章

  1. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别【含Matlab源码 518期】
  2. 【图像去噪】基于matlab高斯+低通+巴特沃斯滤波虹膜图像滤波【含Matlab源码 501期】
  3. 【三维路径规划】基于matlab粒子群算法无人机三维路径规划【含Matlab源码 015期】
  4. SPSS 项目分析(图文+数据集)【SPSS 032期】
  5. acl自然语言处理_ACL 2020中自然语言处理中的知识图
  6. 索佳电子水准数据传输软件_安徽铜陵磁致伸缩式静力水准仪公司
  7. 例3.4 二叉树遍历 - 九度教程第32题(二叉树)
  8. 计算器: 请输入两个数和一个符号,完成两个数的+ - * / % // **
  9. phpyii框架倒叙_YII框架常用技巧总结
  10. composer 完整路径才能访问_Docker 漏洞:允许攻击者获得主机 root 访问权限