zoukankan      html  css  js  c++  java
  • HttpApplication

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

    HttpApplication 类的实例是在 ASP.NET 基础结构中创建的,而不是由用户直接创建的。HttpApplication 类的一个实例在其生存期内被用于处理多个请求,但它一次只能处理一个请求。这样,成员变量才可用于存储针对每个请求的数据。

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

    1. BeginRequest

    2. AuthenticateRequest

    3. PostAuthenticateRequest

    4. AuthorizeRequest

    5. PostAuthorizeRequest

    6. ResolveRequestCache

    7. PostResolveRequestCache

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

    8. PostMapRequestHandler

    9. AcquireRequestState

    10. PostAcquireRequestState

    11. PreRequestHandlerExecute

      执行事件处理程序。

    12. PostRequestHandlerExecute

    13. ReleaseRequestState

    14. PostReleaseRequestState

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

    15. UpdateRequestCache

    16. PostUpdateRequestCache

    17. EndRequest

    下面的两个示例演示如何使用 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>


     

  • 相关阅读:
    关于WPF的2000件事 01--WPF是什么?
    生产力
    读书笔记-WPF资源、样式、模板
    泛型
    WebAPI Post方法接收的FromBody一直为null
    第一讲 从头开始做一个web qq 机器人,第一步获取smart qq二维码
    .net dll反编译出现的问题,以及部分修复的方法
    以太坊中私有链的搭建
    java.. C# 使用AES加密互解 采用AES-128-ECB加密模式
    还原数据库出错 解决3154
  • 原文地址:https://www.cnblogs.com/200325074/p/1416909.html
Copyright © 2011-2022 走看看