5

ASP.NET Web API では、HTTP 要求と応答はサーバー上のパイプラインで処理されます。

パイプラインの非常に早い段階で何らかのロジックまたはグローバル動作を追加したい場合は、メッセージ ハンドラーで行う必要があります。(例: 認証)

しかし、Http モジュールのパイプラインはどうでしょうか? この話全体のどこに収まりますか?

Web API ライフ サイクルのこの番号付きステージを見ると、次のようになります。

http://i.stack.imgur.com/jkQe8.jpg

ここに画像の説明を入力

しかし、Httpモジュールの一般的なイベントを見ると(もっと含まれていますが...)ここに画像の説明を入力

質問 :

— これらの 2 つのシステムはどのように組み合わされ、どこで結合されますか? Web API と http モジュールを含む写真が 1 枚あるとしたら、数字はどうなるでしょうか。(わかりやすいように画像に数字を入れました)

— パイプラインの早い段階で何かを行いたい場合は、メッセージ ハンドラを使用する必要があるとよく耳にしますが、BeginRequestたとえば HttpModule の場合はどうでしょうか。この段階でnullのオブジェクトがあることは知っていますが、それでも、httpmoduleの後のフェーズでHttpContetxtのオブジェクトが膨らみます-それでも、webapiの人たちは、MessageHandlersを使用すると言います....(それはselfhoster環境の事実に関連していますか)?

4

1 に答える 1

6

下の図を上の図に結合するには、上の図の IHttpHandler ボックスが下の図の ASPX に対応していると想像して、下の図を上の図の左下に配置します。したがって、8 と 9 は IIS ASP.NET パイプラインの一部です。IIS パイプラインはモジュールなどを実行し、ハンドラーが要求を処理すると終了します。Web API では、そのハンドラーがたまたまありHttpControllerHandler、ここから Web API パイプラインが開始されます。を見るとHttpControllerHandler、要求と応答は左側が ASP.NET 固有であり、右側HttpRequestMesssageが Web API 固有になっています。

2 番目の質問に対して、Web API パイプラインで最も早くできるのはメッセージ ハンドラーです。HttpModule はさらに早くなりますが、Web API の一部ではなく、ホスティングです。トレードオフは、HttpModule がある場合、IIS でのみ使用できるのに対し、メッセージ ハンドラーは Web API 固有およびホスト固有であるため、任意のホストで実行できることです。最近の SO への返信で MSDN の記事を参照し続けていますが、たまたまその記事が質問されている質問に関連していることがあります。ということで、再度リンクするしかありません。どうぞ。_ その記事では、さまざまなオプションを比較しています。

于 2014-10-25T02:34:41.367 に答える