0

たとえばwww.asdf.comなどのローカル ホストで実行されているサンプル Web サイト アプリケーションを考えてみましょう。ユーザーがブラウザで URL にアクセスしたとき

  1. ihttp ハンドラまたは ihttp モジュールをクラスに継承することでキャプチャできますか

  2. www.asdf.com?t=valueを変更して URL にヒットした場合、その値を取得することは可能です。

Java では、この概念はサーブレット フィルタとして使用されます。dotnetにそのようなものはありますか

あなたの応答を待っています

4

1 に答える 1

1

モジュールとハンドラーは 2 つの異なることを行います。

  1. モジュールはアプリケーションにプラグインし、ライフサイクルを要求し、途中で任意の数のイベントに応答して、各要求の機能の一部に影響を与えます。通常は、セキュリティ、ロギング、圧縮などに使用されます。たとえば、各リクエスト中に (特に) イベントにFormsAuthenticationModule応答し、認証チケットがあるかどうかを確認して検証し、現在のAuthorizeRequestユーザーが認証されているかどうか (および誰が認証されているか) のコンテキスト。
  2. ハンドラーは、特定のパスまたは拡張機能への要求を待機し、何か役立つことを行うように設計されています。たとえば、.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() 
    {
    }
}
于 2012-06-07T10:15:23.363 に答える