HttpApplication クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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
- 実装
例
次の 2 つの例は、 HttpApplication クラスとそのイベントを使用する方法を示しています。 最初の例では、カスタム HTTP モジュールを作成し、それにイベントを接続する方法を示します。 2 番目の例では、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 ファイルの構成設定を変更して、HTTP モジュールについて ASP.NET に通知する必要があります。 次の例は、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 クラスの 1 つのインスタンスは、有効期間内の多くの要求を処理するために使用されます。 ただし、一度に処理できる要求は 1 つだけです。 したがって、メンバー変数を使用して要求ごとのデータを格納できます。
アプリケーションは、 IHttpModule インターフェイスを実装するカスタム モジュールまたは Global.asax ファイルで定義されているイベント ハンドラー コードによって処理できるイベントを発生させます。 IHttpModule インターフェイスを実装するカスタム モジュールは、App_Code フォルダーまたは Bin フォルダー内の DLL に配置できます。
HttpApplication は、.NET Framework バージョン 3.5 で導入されています。 詳細については、「 バージョンと依存関係」を参照してください。
Note
統合モードで IIS 7.0 を実行している場合、App_Code フォルダーまたは Bin フォルダー内のカスタム モジュールは、要求パイプライン内のすべての要求に適用されます。 Global.asax ファイル内のイベント ハンドラー コードは、ASP.NET ハンドラーにマップされている要求にのみ適用されます。
アプリケーション イベントは、次の順序で発生します。
-
PostResolveRequestCache イベントの後、および PostMapRequestHandler イベントの前に、イベント ハンドラー (要求 URL に対応するページ) が作成されます。 サーバーが統合モードで IIS 7.0 を実行していて、少なくとも .NET Framework バージョン 3.0 である場合、MapRequestHandler イベントが発生します。 サーバーが IIS 7.0 をクラシック モードまたは以前のバージョンの IIS で実行している場合、このイベントは処理できません。
-
イベント ハンドラーが実行されます。
-
PostReleaseRequestState イベントが発生すると、既存の応答フィルターによって出力がフィルター処理されます。
-
このイベントは、IIS 7.0 統合モードおよび少なくとも .NET Framework 3.0 でサポートされています
-
このイベントは、IIS 7.0 統合モードと少なくとも .NET Framework 3.0 でサポートされています
コンストラクター
| 名前 | 説明 |
|---|---|
| HttpApplication() |
HttpApplication クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Application |
アプリケーションの現在の状態を取得します。 |
| Context |
現在の要求に関する HTTP 固有の情報を取得します。 |
| Events |
すべてのアプリケーション イベントを処理するイベント ハンドラー デリゲートの一覧を取得します。 |
| Modules |
現在のアプリケーションのモジュールのコレクションを取得します。 |
| Request |
現在の要求の組み込み要求オブジェクトを取得します。 |
| Response |
現在の要求の組み込み応答オブジェクトを取得します。 |
| Server |
現在の要求の組み込みサーバー オブジェクトを取得します。 |
| Session |
セッション データへのアクセスを提供する組み込みセッション オブジェクトを取得します。 |
| Site |
IComponent実装のサイト インターフェイスを取得または設定します。 |
| User |
現在の要求の組み込みユーザー オブジェクトを取得します。 |
メソッド
イベント
| 名前 | 説明 |
|---|---|
| AcquireRequestState |
ASP.NET が現在の要求に関連付けられている現在の状態 (セッション状態など) を取得するときに発生します。 |
| AuthenticateRequest |
セキュリティ モジュールがユーザーの ID を確立したときに発生します。 |
| AuthorizeRequest |
セキュリティ モジュールがユーザー承認を検証したときに発生します。 |
| BeginRequest |
ASP.NET が要求に応答すると、HTTP パイプラインの実行チェーンの最初のイベントとして発生します。 |
| Disposed |
アプリケーションが破棄されるときに発生します。 |
| EndRequest |
ASP.NET が要求に応答するときに、HTTP パイプラインの実行チェーンの最後のイベントとして発生します。 |
| Error |
ハンドルされない例外がスローされたときに発生します。 |
| LogRequest |
ASP.NET が現在の要求のログ記録を実行する直前に発生します。 |
| MapRequestHandler |
要求に応答するためにハンドラーが選択されたときに発生します。 |
| PostAcquireRequestState |
現在の要求に関連付けられている要求の状態 (セッション状態など) が取得されたときに発生します。 |
| PostAuthenticateRequest |
セキュリティ モジュールがユーザーの ID を確立したときに発生します。 |
| PostAuthorizeRequest |
現在の要求のユーザーが承認されたときに発生します。 |
| PostLogRequest |
ASP.NET が LogRequest イベントのすべてのイベント ハンドラーの処理を完了したときに発生します。 |
| PostMapRequestHandler |
ASP.NET が現在の要求を適切なイベント ハンドラーにマップしたときに発生します。 |
| PostReleaseRequestState |
ASP.NET がすべての要求イベント ハンドラーの実行を完了し、要求状態データが格納されたときに発生します。 |
| PostRequestHandlerExecute |
ASP.NET イベント ハンドラー (ページや XML Web サービスなど) の実行が完了したときに発生します。 |
| PostResolveRequestCache |
ASP.NET が現在のイベント ハンドラーの実行をバイパスし、キャッシュ モジュールがキャッシュからの要求を処理できるようにする場合に発生します。 |
| PostUpdateRequestCache |
ASP.NET がキャッシュ モジュールの更新を完了し、キャッシュからの後続の要求を処理するために使用される応答を格納するときに発生します。 |
| PreRequestHandlerExecute |
ASP.NET がイベント ハンドラー (ページや XML Web サービスなど) の実行を開始する直前に発生します。 |
| PreSendRequestContent |
ASP.NET がクライアントにコンテンツを送信する直前に発生します。 |
| PreSendRequestHeaders |
クライアントに HTTP ヘッダー ASP.NET 送信する直前に発生します。 |
| ReleaseRequestState |
ASP.NET がすべての要求イベント ハンドラーの実行を完了した後に発生します。 このイベントにより、状態モジュールは現在の状態データを保存します。 |
| RequestCompleted |
要求に関連付けられているマネージド オブジェクトが解放されたときに発生します。 |
| ResolveRequestCache |
ASP.NET が承認イベントを終了し、キャッシュ モジュールがキャッシュからの要求を処理し、イベント ハンドラー (ページや XML Web サービスなど) の実行をバイパスしたときに発生します。 |
| UpdateRequestCache |
キャッシュ モジュールが、キャッシュからの後続の要求を処理するために使用される応答を格納できるようにするために、ASP.NET がイベント ハンドラーの実行を完了したときに発生します。 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IHttpAsyncHandler.BeginProcessRequest(HttpContext, AsyncCallback, Object) |
HTTP イベント ハンドラーへの非同期呼び出しを開始します。 |
| IHttpAsyncHandler.EndProcessRequest(IAsyncResult) |
プロセスの終了時に非同期プロセス |
| IHttpHandler.IsReusable |
別の要求でIHttpHandler オブジェクトを使用できるかどうかを示す |
| IHttpHandler.ProcessRequest(HttpContext) |
IHttpHandler インターフェイスを実装するカスタム HTTP ハンドラーによる HTTP Web 要求の処理を有効にします。 |