web-dev-qa-db-ja.com

ASP.NETのHttpHandlerとは

ASP.NETのHttpHandlerとは何ですか?なぜ、どのように使用されていますか?

64
Nikola Stjelja

最も簡単に言えば、ASP.NET HttpHandlerはSystem.Web.IHttpHandlerインターフェイスを実装するクラスです。

ASP.NET HTTPHandlerは、ASP.NET Webアプリケーションサーバーに対して行われたリクエストをインターセプトする役割を果たします。これらは、ASP.NETサイトに対する要求に応じてプロセスとして実行されます。最も一般的なハンドラーは、.aspxファイルを処理するASP.NETページハンドラーです。ユーザーが.aspxファイルを要求すると、要求はページハンドラーを介してページによって処理されます。

ASP.NETは、いくつかのデフォルトのHTTPハンドラーを提供します。

  • ページハンドラー(.aspx):Webページを処理します
  • ユーザーコントロールハンドラー(.ascx):Webユーザーコントロールページを処理します
  • Webサービスハンドラー(.asmx):Webサービスページを処理します
  • トレースハンドラー(trace.axd):トレース機能を処理します

独自のカスタムHTTPハンドラーを作成して、ブラウザーにカスタム出力をレンダリングできます。 ASP.NETのHTTPハンドラーの典型的なシナリオは、たとえば

  • 動的に作成された画像(チャートなど)またはサイズ変更された画像の配信。
  • RSS形式のXMLを送信するRSSフィード

実装同期ハンドラーを作成するIHttpHandlerインターフェイスと、非同期ハンドラーを作成するIHttpAsyncHandlerインターフェイス。インターフェイスでは、ProcessRequestメソッドとIsReusableプロパティを実装する必要があります。

ProcessRequestメソッドは、行われたリクエストの実際の処理を処理し、ブールIsReusableプロパティは、ハンドラを再利用のためにプールできるかどうか(パフォーマンスを向上させるため)または各リクエストに新しいハンドラが必要かどうかを指定します。

79
splattne

HttpHandler(またはIHttpHandler)は、基本的にコンテンツの提供を担当するものです。 ASP.NETページ(aspx)はハンドラーの一種です。

たとえば、Webサーバー自体からではなくデータベースから画像などを提供したり、SOAP/WCF /などではなく単純なPOXサービスを作成したりするために、独自のコードを作成できます。

15
Marc Gravell

HttpHandlerの例

ASP.NET 2.0のHTTPハンドラー

ハンドラーは、ブラウザーからのリクエストを処理します。ブラウザーが管理する要求は、ファイル拡張子またはハンドラーを直接呼び出すことで処理されます。着信HTTP要求を処理するための低レベルの要求および応答APIは、Asp.NetのHttp Handlerです。すべてのハンドラーは、System.Web名前空間にあるIHttpHandlerインターフェイスを実装します。ハンドラーは、インターネットサーバーアプリケーションプログラミングインターフェイス(ISAPI)拡張機能に似ています。

IHttpHandlerインターフェイスを実装して同期ハンドラーを作成し、IHttpAsyncHandlerインターフェイスを実装して非同期ハンドラーを作成します。インターフェイスでは、ProcessRequestメソッドとIsReusableプロパティを実装する必要があります。 ProcessRequestメソッドは、行われた要求の実際の処理を処理します。ブールIsReusableプロパティは、ハンドラーを再利用のためにプールしてパフォーマンスを向上させるかどうか、または要求ごとに新しいハンドラーが必要かどうかを指定します。

.ashxファイル拡張子は、カスタムハンドラー用に予約されています。ファイル名拡張子が.ashxのカスタムハンドラーを作成すると、IISおよびASP.NET内に自動的に登録されます。代替ファイル拡張子を使用する場合は、 IISおよびASP.NET内で拡張子を登録します。ashx以外の拡張子を使用する利点は、1つのハンドラーに複数のファイル拡張子を割り当てることができることです。

HTTPハンドラーの構成

構成セクションハンドラーは、着信URLをIHttpHandlerまたはIHttpHandlerFactoryクラスにマッピングします。コンピューター、サイト、またはアプリケーションレベルで宣言できます。サブディレクトリはこれらの設定を継承します。管理者は、タグディレクティブを使用してセクションを構成します。ディレクティブは、トップダウンの順序で解釈および処理されます。セクションハンドラには次の構文を使用します。

HTTPハンドラーの作成

HTTPハンドラーを作成するには、IHttpHandlerインターフェイスを実装する必要があります。 IHttpHandlerインターフェイスには、次のシグネチャを持つ1つのメソッドと1つのプロパティがあります。void ProcessRequest(HttpContext); bool IsReusable {get;}

2
Santosh Wavare

ASP.NET HTTPハンドラーは、ASP.NET Webアプリケーションに対する要求に応じて実行されるプロセス(「エンドポイント」と呼ばれることが多い)です。最も一般的なハンドラーは、.aspxファイルを処理するASP.NETページハンドラーです。ユーザーが.aspx fileをリクエストすると、リクエストはページハンドラーを介してページによって処理されます。

ASP.NETページハンドラは、ハンドラの1つのタイプにすぎません。 ASP.NETには、.asmx filesのWebサービスハンドラーなど、他の組み込みハンドラーがいくつか付属しています。

アプリケーションでファイル名拡張子を使用して特定できる特別な処理が必要な場合は、カスタムHTTPハンドラーを作成できます。たとえば、次のシナリオでは、カスタムHTTPハンドラーを適切に使用できます。

RSS feedsサイトのRSSフィードを作成するには、RSS形式のXMLを出力するハンドラーを作成できます。その後、アプリケーションの.rss拡張子(たとえば)をカスタムハンドラーにバインドできます。ユーザーが.rssで終わるサイトにリクエストを送信すると、ASP.NETはハンドラーを呼び出してリクエストを処理します。

イメージサーバー Webアプリケーションでさまざまなサイズの画像を提供する場合は、カスタムハンドラーを作成して画像のサイズを変更し、ハンドラーの応答としてユーザーに送り返すことができます。

HTTPハンドラーは、要求しているユーザーのID(既知の場合)、アプリケーションの状態、セッション情報など、アプリケーションコンテキストにアクセスできます。 HTTPハンドラーが要求されると、ASP.NETは適切なハンドラーでProcessRequestメソッドを呼び出します。ハンドラーのProcessRequestメソッドは応答を作成し、要求元ブラウザーに送り返します。他のページ要求と同様に、応答はハンドラーの実行後に発生するイベントにサブスクライブしたHTTPモジュールを通過します。

System.Web.IHttpHandlerインターフェイスを実装するクラスは、HttpHandlerになります。また、このクラスは、ASP.NETサイトへの要求に応じてプロセスとして実行されます。

最も一般的なハンドラーは、.aspxファイルを処理するASP.NETページハンドラーです。ユーザーが.aspxファイルを要求すると、要求はページハンドラー(System.Web.IHttpHandlerインターフェイスを実装するクラス)を介してページによって処理されます。

ブラウザーにカスタム出力をレンダリングする独自のカスタムHTTPハンドラーを作成できます。

一部のASP.NETデフォルトハンドラは次のとおりです。

  1. ページハンドラー(.aspx)– Webページを処理します
  2. ユーザーコントロールハンドラー(.ascx)– Webユーザーコントロールページを処理します
  3. Webサービスハンドラー(.asmx)– Webサービスページを処理します
  4. トレースハンドラー(trace.axd)–トレース機能を処理します
1
Rajeev Singh

ASP.NET HTTPハンドラーは、ASP.NET Webアプリケーションに対する要求に応じて実行されるプロセス(「エンドポイント」と呼ばれることが多い)です。最も一般的なハンドラーは、.aspxファイルを処理するASP.NETページハンドラーです。ユーザーが.aspxファイルを要求すると、要求はページハンドラーを介してページによって処理されます。ブラウザーにカスタム出力をレンダリングする独自のHTTPハンドラーを作成できます。

1
Budhimanta