HttpApplication 类

定义

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

public ref class HttpApplication : IDisposable, System::ComponentModel::IComponent, System::Web::IHttpAsyncHandler
public class HttpApplication : IDisposable, System.ComponentModel.IComponent, System.Web.IHttpAsyncHandler
type HttpApplication = class
    interface IHttpAsyncHandler
    interface IHttpHandler
    interface IComponent
    interface IDisposable
type HttpApplication = class
    interface IComponent
    interface IDisposable
    interface IHttpAsyncHandler
    interface IHttpHandler
Public Class HttpApplication
Implements IComponent, IDisposable, IHttpAsyncHandler
继承
HttpApplication
实现

示例

以下两个示例演示如何使用 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 ");
        }
    }
}
Imports System.Web

Namespace Samples.AspNet.VB
    Public Class CustomHTTPModule
        Implements IHttpModule

        Public Sub New()

            ' Class constructor.

        End Sub


        ' Classes that inherit IHttpModule 
        ' must implement the Init and Dispose methods.
        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init

            AddHandler app.AcquireRequestState, AddressOf app_AcquireRequestState
            AddHandler app.PostAcquireRequestState, AddressOf app_PostAcquireRequestState

        End Sub


        Public Sub Dispose() Implements IHttpModule.Dispose

            ' Add code to clean up the
            ' instance variables of a module.

        End Sub


        ' Define a custom AcquireRequestState event handler.
        Public Sub app_AcquireRequestState(ByVal o As Object, ByVal ea As EventArgs)

            Dim httpApp As HttpApplication = CType(o, HttpApplication)
            Dim ctx As HttpContext = HttpContext.Current
            ctx.Response.Write(" Executing AcquireRequestState ")

        End Sub

        ' Define a custom PostAcquireRequestState event handler.
        Public Sub app_PostAcquireRequestState(ByVal o As Object, ByVal ea As EventArgs)

            Dim httpApp As HttpApplication = CType(o, HttpApplication)
            Dim ctx As HttpContext = HttpContext.Current
            ctx.Response.Write(" Executing PostAcquireRequestState ")

        End Sub

    End Class

End Namespace

在自定义 HTTP 模块中发生事件之前,必须修改Web.config文件中的配置设置,以通知 ASP.NET 有关 HTTP 模块的信息。 以下示例显示了Web.config文件中的相应配置设置 httpModules 。 以下设置适用于 IIS 7.0 经典模式和早期版本的 IIS。

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

以下设置适用于 IIS 7.0 集成模式。

<configuration>  
  <system.webServer>  
    <modules>  
      <add type="Samples.AspNet.CS.CustomHTTPModule"  
        name="CustomHttpModule" />  
      </modules>  
  </system.webServer>  
</configuration>  
<configuration>  
  <system.webServer>  
    <modules>  
      <add type="Samples.AspNet.VB.CustomHTTPModule"  
        name="CustomHttpModule" />  
      <modules>  
  </system.webServer>  
</configuration>  

注解

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

应用程序会引发可由实现 IHttpModule 接口的自定义模块或 Global.asax 文件中定义的事件处理程序代码处理的事件。 实现接口的 IHttpModule 自定义模块可以放在 App_Code 文件夹中或 Bin 文件夹中的 DLL 中。

HttpApplication在 .NET Framework 版本 3.5 中引入。 有关详细信息,请参见版本和依赖关系

备注

在集成模式下运行 IIS 7.0 时,App_Code文件夹或 Bin 文件夹中的自定义模块将应用于请求管道中的所有请求。 Global.asax 文件中的事件处理程序代码仅适用于映射到 ASP.NET 处理程序的请求。

应用程序事件按以下顺序引发:

  1. BeginRequest

  2. AuthenticateRequest

  3. PostAuthenticateRequest

  4. AuthorizeRequest

  5. PostAuthorizeRequest

  6. ResolveRequestCache

  7. PostResolveRequestCache

    PostResolveRequestCache 事件之后和事件之前 PostMapRequestHandler ,事件处理程序 (,该事件处理程序是与创建请求 URL) 对应的页面。 当服务器在集成模式下运行 IIS 7.0 并且至少.NET Framework版本 3.0 时,MapRequestHandler将引发该事件。 当服务器在经典模式或早期版本的 IIS 中运行 IIS 7.0 时,无法处理此事件。

  8. PostMapRequestHandler

  9. AcquireRequestState

  10. PostAcquireRequestState

  11. PreRequestHandlerExecute

    执行事件处理程序。

  12. PostRequestHandlerExecute

  13. ReleaseRequestState

  14. PostReleaseRequestState

    PostReleaseRequestState引发事件后,任何现有响应筛选器都会筛选输出。

  15. UpdateRequestCache

  16. PostUpdateRequestCache

  17. LogRequest.

    IIS 7.0 集成模式和至少.NET Framework 3.0 支持此事件

  18. PostLogRequest

    支持此事件 IIS 7.0 集成模式,至少支持 .NET Framework 3.0

  19. EndRequest

构造函数

HttpApplication()

初始化 HttpApplication 类的新实例。

属性

Application

获取应用程序的当前状态。

Context

获取关于当前请求的 HTTP 特定信息。

Events

获取处理所有应用程序事件的事件处理程序委托列表。

Modules

获取当前应用程序的模块集合。

Request

获取当前请求所对应的内部请求对象。

Response

获取当前请求所对应的内部响应对象。

Server

获取当前请求所对应的内部服务器对象。

Session

获取提供对会话数据的访问的内部会话对象。

Site

获取或设置 IComponent 实现的网站接口。

User

获取当前请求的内部用户对象。

方法

AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler)

将指定的 AcquireRequestState 事件添加到当前请求的异步 AcquireRequestState 事件处理程序的集合。

AddOnAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 AcquireRequestState 事件添加到当前请求的异步 AcquireRequestState 事件处理程序的集合。

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 AuthenticateRequest 事件添加到当前请求的异步 AuthenticateRequest 事件处理程序的集合。

AddOnAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 AuthenticateRequest 事件添加到当前请求的异步 AuthenticateRequest 事件处理程序的集合。

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 AuthorizeRequest 事件添加到当前请求的异步 AuthorizeRequest 事件处理程序的集合。

AddOnAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 AuthorizeRequest 事件添加到当前请求的异步 AuthorizeRequest 事件处理程序的集合。

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 BeginRequest 事件添加到当前请求的异步 BeginRequest 事件处理程序的集合。

AddOnBeginRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 BeginRequest 事件添加到当前请求的异步 BeginRequest 事件处理程序的集合。

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 EndRequest 事件添加到当前请求的异步 EndRequest 事件处理程序的集合。

AddOnEndRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 EndRequest 事件添加到当前请求的异步 EndRequest 事件处理程序的集合。

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 LogRequest 事件添加到当前请求的异步 LogRequest 事件处理程序的集合。

AddOnLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 LogRequest 事件添加到当前请求的异步 LogRequest 事件处理程序的集合。

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

将指定的 MapRequestHandler 事件添加到当前请求的异步 MapRequestHandler 事件处理程序的集合。

AddOnMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 MapRequestHandler 事件添加到当前请求的异步 MapRequestHandler 事件处理程序的集合。

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler)

将指定的 PostAcquireRequestState 事件添加到当前请求的异步 PostAcquireRequestState 事件处理程序的集合。

AddOnPostAcquireRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostAcquireRequestState 事件添加到当前请求的异步 PostAcquireRequestState 事件处理程序的集合。

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 PostAuthenticateRequest 事件添加到当前请求的异步 PostAuthenticateRequest 事件处理程序的集合。

AddOnPostAuthenticateRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostAuthorizeRequest 事件添加到当前请求的异步 PostAuthorizeRequest 事件处理程序的集合。

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 PostAuthorizeRequest 事件添加到当前请求的异步 PostAuthorizeRequest 事件处理程序的集合。

AddOnPostAuthorizeRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostAuthorizeRequest 添加到当前请求的异步 PostAuthorizeRequest 事件处理程序的集合中。

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler)

将指定的 PostLogRequest 事件添加到当前请求的异步 PostLogRequest 事件处理程序的集合。

AddOnPostLogRequestAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostLogRequest 事件添加到当前请求的异步 PostLogRequest 事件处理程序的集合。

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler)

将指定的 PostMapRequestHandler 事件添加到当前请求的异步 PostMapRequestHandler 事件处理程序的集合。

AddOnPostMapRequestHandlerAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostMapRequestHandler 事件添加到当前请求的异步 PostMapRequestHandler 事件处理程序的集合。

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

将指定的 PostReleaseRequestState 事件添加到当前请求的异步 PostReleaseRequestState 事件处理程序的集合。

AddOnPostReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostReleaseRequestState 事件添加到当前请求的异步 PostReleaseRequestState 事件处理程序的集合。

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

将指定的 PostRequestHandlerExecute 事件添加到当前请求的异步 PostRequestHandlerExecute 事件处理程序的集合。

AddOnPostRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostRequestHandlerExecute 事件添加到当前请求的异步 PostRequestHandlerExecute 事件处理程序的集合。

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

将指定的 PostResolveRequestCache 事件添加到当前请求的异步 PostResolveRequestCache 事件处理程序的集合。

AddOnPostResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostResolveRequestCache 事件添加到当前请求的异步 PostResolveRequestCache 事件处理程序的集合。

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

将指定的 PostUpdateRequestCache 事件添加到当前请求的异步 PostUpdateRequestCache 事件处理程序的集合。

AddOnPostUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PostUpdateRequestCache 事件添加到当前请求的异步 PostUpdateRequestCache 事件处理程序的集合。

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler)

将指定的 PreRequestHandlerExecute 事件添加到当前请求的异步 PreRequestHandlerExecute 事件处理程序的集合。

AddOnPreRequestHandlerExecuteAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 PreRequestHandlerExecute 事件添加到当前请求的异步 PreRequestHandlerExecute 事件处理程序的集合。

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler)

将指定的 ReleaseRequestState 事件添加到当前请求的异步 ReleaseRequestState 事件处理程序的集合。

AddOnReleaseRequestStateAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 ReleaseRequestState 事件添加到当前请求的异步 ReleaseRequestState 事件处理程序的集合。

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler)

将指定的 ResolveRequestCache 事件处理程序添加到当前请求的异步 ResolveRequestCache 事件处理程序的集合。

AddOnResolveRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 ResolveRequestCache 事件处理程序添加到当前请求的异步 ResolveRequestCache 事件处理程序的集合。

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler)

将指定的 UpdateRequestCache 事件添加到当前请求的异步 UpdateRequestCache 事件处理程序的集合。

AddOnUpdateRequestCacheAsync(BeginEventHandler, EndEventHandler, Object)

将指定的 UpdateRequestCache 事件添加到当前请求的异步 UpdateRequestCache 事件处理程序的集合。

CompleteRequest()

使 ASP.NET 跳过 HTTP 执行管线链中的所有事件和筛选并直接执行 EndRequest 事件。

Dispose()

处置 HttpApplication 实例。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetOutputCacheProviderName(HttpContext)

获取为网站配置的默认输出缓存提供程序的名称。

GetType()

获取当前实例的 Type

(继承自 Object)
GetVaryByCustomString(HttpContext, String)

提供 VaryByCustom 属性在整个应用程序范围内的实现。

Init()

在添加所有事件处理程序模块之后执行自定义初始化代码。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnExecuteRequestStep(Action<HttpContextBase,Action>)

指定在执行请求执行步骤时调用的回调。

RegisterModule(Type)

注册应用程序模块。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

事件

AcquireRequestState

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

AuthenticateRequest

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

AuthorizeRequest

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

BeginRequest

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

Disposed

在释放应用程序时发生。

EndRequest

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

Error

当引发未经处理的异常时发生。

LogRequest

恰好在 ASP.NET 为当前请求执行任何记录之前发生。

MapRequestHandler

在选择了用来响应请求的处理程序时发生。

PostAcquireRequestState

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

PostAuthenticateRequest

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

PostAuthorizeRequest

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

PostLogRequest

在 ASP.NET 处理完 LogRequest 事件的所有事件处理程序后发生。

PostMapRequestHandler

在 ASP.NET 已将当前请求映射到相应的事件处理程序时发生。

PostReleaseRequestState

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

PostRequestHandlerExecute

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

PostResolveRequestCache

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

PostUpdateRequestCache

在 ASP.NET 完成缓存模块的更新并存储了用于从缓存中为后续请求提供服务的响应后,发生此事件。

PreRequestHandlerExecute

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

PreSendRequestContent

恰好在 ASP.NET 向客户端发送内容之前发生。

PreSendRequestHeaders

恰好在 ASP.NET 向客户端发送 HTTP 标头之前发生。

ReleaseRequestState

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

RequestCompleted

当托管对象与已经释放的请求相关联时发生。

ResolveRequestCache

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

UpdateRequestCache

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

显式接口实现

IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object)

启动对 HTTP 事件处理程序的异步调用。

IHttpAsyncHandler.EndProcessRequest(IAsyncResult)

在进程完成时提供一个异步进程 End 方法。

IHttpHandler.IsReusable

获取一个 Boolean 值,它指示其他请求是否可以使用 IHttpHandler 对象。

IHttpHandler.ProcessRequest(HttpContext)

通过实现 IHttpHandler 接口的自定义 HTTP 处理程序启用 HTTP Web 请求的处理。

适用于

另请参阅