1

自己ホスト型の ASP.NET Web Apiでは、次のことができます。

  1. 「アンビエント」Web API コンテキストがあるかどうかをクラスから検出します。これは、すべてのサービス呼び出しでメタデータ情報を渡さないようにするために必要です。私は同等のものを探しています

    System.Web.HttpRequest.Current != null

  2. 現在のリクエストに関連付けられたメタデータ情報を添付するにはどうすればよいですか。繰り返しになりますが、このメタデータの一部は非常に普及しているため、すべてのメソッドと呼び出しにそれらを含めるのは非常に面倒です。トランザクション、マルチテナント アーキテクチャ、および資格情報について考えてみてください。コードを乱雑にすることなく、この種の情報がリクエスト間を流れるようにする方法が必要です。

    別の言葉では、ここで説明されているように、これと同等のものも必要です:

    HttpContext.Current.Items["user" + X.ToString()]

WebApi が IIS でホストされている限り、引き続きそれらにアクセスできると思いますが、これらは自己ホストされており、周囲の UoW 情報を追跡する方法が必要です。どうすればよいですか?

いくつかのメモ:

  1. また、リクエストごとの DI を使用し、リクエスト コンテキストをマネージャーに挿入することも検討しましたが、そのために設定されていないレガシー コードが大量にあり (そのうちのいくつかは静的です)、吹き飛ばす勇気がありません。このような大規模なリファクタリングを行うことで、生産性を向上させます。
  2. 私はまた、スレッド静的、静的変数を使用しました-そのような問題は、スレッドがリサイクルされ、プロセスが複数のサービスをホストし、そのうちのいくつかはWebApiでさえありません...そのため、マネージャーはWebApiリクエストを処理していると考えることがあります実際にはWCFのものを提供しています。
4

1 に答える 1

1

HttpRequestMessage インスタンスには、要求ごとの任意のコンテキストを保持するための Properties ディクショナリがあります。

于 2013-08-02T02:33:16.240 に答える