モジュールとハンドラーは 2 つの異なることを行います。
- モジュールはアプリケーションにプラグインし、ライフサイクルを要求し、途中で任意の数のイベントに応答して、各要求の機能の一部に影響を与えます。通常は、セキュリティ、ロギング、圧縮などに使用されます。たとえば、各リクエスト中に (特に) イベントに
FormsAuthenticationModule
応答し、認証チケットがあるかどうかを確認して検証し、現在のAuthorizeRequest
ユーザーが認証されているかどうか (および誰が認証されているか) のコンテキスト。
- ハンドラーは、特定のパスまたは拡張機能への要求を待機し、何か役立つことを行うように設計されています。たとえば、.ASPX ファイルへの要求はハンドラーによって処理されます
Page
。このハンドラーは、ASPX とそれに関連する分離コード (存在する場合) を解析して実行します。
モジュールとハンドラーの両方がHttpContext
オブジェクトにアクセスできるため、現在のアプリケーション、現在のリクエストとレスポンス、ユーザーなどを検査し、多くの場合操作することができます。つまり、どちらもリクエスト中に提供されたクエリ文字列値にアクセスできます。
モジュールはサーブレット フィルターに最も似ていると思います。
このモジュールはt
クエリ文字列を探し、すべてのリクエストの最初にエコーします。
public class MyModule : IHttpModule {
public String ModuleName {
get { return "MyModule"; }
}
public void Init(HttpApplication application) {
application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
}
private void Application_BeginRequest(Object source, EventArgs e) {
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write(string.Format("The value of \"t\" is {0}", context.Request.QueryString["t"]);
}
public void Dispose()
{
}
}