HttpApplication 类 Home
This page is specific to:.NET Framework Version:2.03.03.5
.NET Framework 类库
HttpApplication 类

更新:2007 年 11 月

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

命名空间:  System.Web
程序集:  System.Web(在 System.Web.dll 中)

语法

<AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level := AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level := AspNetHostingPermissionLevel.Minimal)> _
Public Class HttpApplication _
    Implements IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable
Dim instance As HttpApplication
我们尚未提供此语言的代码示例。
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public class HttpApplication implements IHttpAsyncHandler, 
    IHttpHandler, IComponent, IDisposable
备注

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

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

.NET Framework 3.5 版中引入了 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 7.0 或者运行的是较早版本的 IIS,则无法处理此事件。

  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 类及其事件。第一个示例演示如何创建自定义 HTTP 模块以及如何将事件连接到该模块。第二个示例演示如何修改 Web.config 文件。

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

Imports System
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.VB.CustomHTTPModule"
        name="CustomHttpModule" />
      </httpModules>
  </system.web>
</configuration>

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

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

继承层次结构

System..::.Object
  System.Web..::.HttpApplication
线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
平台

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

版本信息

.NET Framework

受以下版本支持:3.5、3.0、2.0、1.1、1.0
另请参见

参考

其他资源

© 2009 Microsoft Corporation 版权所有。   保留所有权利 | 商标 | 隐私权声明
Page view tracker
为轻量型库评级
x
依无脚本原则生成的轻量型库 (loband),添加了大家要求的功能:搜索框和默认代码语言选择。
您喜欢这个搜索框吗?
您喜欢标签式代码块吗?
此主题有用吗?
提供详细反馈。
谢谢
x
感谢您帮助改善 MSDN Online。
反馈意见
切换视图
经典视图
轻量型视图
无脚本视图
切换视图