ASP.NET MVC4 を使用して、WebAPI プロジェクトで DelegatingHandler を作成しました。Handler を使用して HttpRequestMessage Properties コレクションにデータを挿入し、Http パイプラインの後半部分 (他のハンドラーやコントローラーなど) がそのデータにアクセスできるようにします。
例:
var httpRequest = (HttpRequestMessageProperty) request.Properties["httpRequest"];
httpRequest.Headers["MY_DATA"] = "some data";
これが WebAPI 要求処理のスループットに与える影響をテストしたかったので、アクション デリゲート内で HttpClient をインスタンス化し、要求を送信し、応答を待ってから次の応答を送信するコンソール アプリを作成しました。ここで説明されているパフォーマンス測定戦略を使用して、5 秒のウィンドウ内でこのアクション デリゲートの実行が成功した回数をカウントします: http://www.codeproject.com/Articles/61964/Performance-Tests-Precise-Run-Time-Measurements-ウィ
私が観察したことは、Properties コレクションから httpRequest を取得する 1 行を実行すると、パフォーマンスが大幅に低下することです。このコード行がないと、5 秒以内に 700 件以上の完了が表示されます。その行を追加すると、5 秒以内に <20 の完了に落ちます。
他の誰かがこれを経験しましたか?HTTP パイプライン全体で使用できる単一の要求の長さのデータをキャッシュするために使用する別の方法はありますか?