HttpApplication クラス
アセンブリ: System.Web (system.web.dll 内)
構文
Public Class HttpApplication Implements IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable
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 ファイルで定義されているモジュールまたはユーザー コードで処理されるイベントを次の順序で実行します。
-
BeginRequest
-
AuthenticateRequest
-
PostAuthenticateRequest
-
AuthorizeRequest
-
PostAuthorizeRequest
-
ResolveRequestCache
-
PostResolveRequestCache
PostResolveRequestCache イベントの後および PostMapRequestHandler イベントの前に、イベント ハンドラ (要求 URL に対応するページ) が作成されます。
-
PostMapRequestHandler
-
AcquireRequestState
-
PostAcquireRequestState
-
PreRequestHandlerExecute
-
PostRequestHandlerExecute
-
ReleaseRequestState
-
PostReleaseRequestState
-
UpdateRequestCache
-
PostUpdateRequestCache
-
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>
System.Web.HttpApplication
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- HttpApplication クラスのページへのリンク