HttpApplication クラス

ASP.NET アプリケーション内のすべてのアプリケーション オブジェクトに共通のメソッド、プロパティ、およびイベントを定義します。このクラスはアプリケーションの基本クラスで、開発者が Global.asax ファイルで定義します。

名前空間: System.Web
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Public Class HttpApplication
    Implements IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable
'使用
Dim instance As HttpApplication
public class HttpApplication : IHttpAsyncHandler, IHttpHandler, IComponent, 
    IDisposable
public ref class HttpApplication : IHttpAsyncHandler, IHttpHandler, IComponent, 
    IDisposable
public class HttpApplication implements IHttpAsyncHandler, IHttpHandler, 
    IComponent, IDisposable
public class HttpApplication implements IHttpAsyncHandler, IHttpHandler, 
    IComponent, IDisposable
適用できません。

解説

HttpApplication クラスのインスタンスは、開発者が直接作成するのではなく、ASP.NET インフラストラクチャで作成されます。HttpApplication クラスの 1 つのインスタンスを使用してその有効期間内に多くの要求を処理できますが、インスタンスで一度に処理できる要求は 1 つだけです。このため、メンバ変数を使用して、要求ごとのデータを格納できます。

アプリケーションは、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 クラスとそのイベントの使用方法を次の 2 つの例に示します。コード例では、カスタム HTTP モジュールを作成してそれにイベントを接続する方法を示します。2 つ目の例では、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
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 モジュール内でイベントを発生させるためには、まず、HTTP モジュールに関する通知が ASP.NET に対して行われるように、Web.config ファイルで構成設定を変更する必要があります。Web.config ファイルの httpModules セクションにおける適切な構成設定を次のコード例に示します。

<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>

.NET Framework のセキュリティ

  • AspNetHostingPermission  (ホスト環境での動作に必要なアクセス許可)要求値 : LinkDemand; アクセス許可値 : Minimal
  • AspNetHostingPermission  (ホスト環境での動作に必要なアクセス許可)要求値 : InheritanceDemand; アクセス許可値 : Minimal

継承階層

System.Object
  System.Web.HttpApplication

スレッド セーフ

この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

HttpApplication メンバ
System.Web 名前空間
IHttpHandlerFactory
IHttpHandler
IHttpModule

その他の技術情報

httpHandlers 要素 (ASP.NET 設定スキーマ)
httpModules 要素 (ASP.NET 設定スキーマ)