ASP.Netコアを使用していますが、ビジネスロジッククラス(コントローラまたはアクションではありません)の特定のHTTPヘッダーにアクセスする必要があります。ASP.NetコアビジネスロジックのHTTPヘッダーへのアクセス
ここで設定の全体像を提供するために、カスタムHTTPヘッダーに値を追加するカスタムASP.Netコアミドルウェアがあります。これは、アクセスする必要があるこのヘッダーの値ですビジネスロジッククラスで使用します。
現在、私がこれを達成する方法は、次のDI登録を使用してHttpContextAccessorを注入することです。私は、コンストラクタ注入を使用してIHttpContextAccessorを要求し、関連するHTTPヘッダーにアクセスするためにこれを使用するHTTPヘッダーへのアクセスを必要とするクラスで
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
。
上記の作業をうまくやっていて、私が必要とする結果が得られますが、インターネット上のさまざまな記事を見ていますが、ASP.Net CoreでHttpContext.Currentを使用しないように一般的なコンセンサスがあります。
上記の場合、ビジネスロジッククラスがカスタムミドルウェアがカスタムHTTPヘッダーに挿入する値にアクセスするためのより良い方法がありますか?
ミドルウェアはビジネスロジッククラスで使用するために必要な値をHTTPヘッダーに格納していますが、ビジネスロジッククラスで必要な値を使用できるようにミドルウェアの他のメソッドを公開しています。より良いアプローチがあれば。
ご質問やご不明な点がございましたら、お知らせください。
一部の実装では、値を取得するためにコンテキストにアクセスする必要があります。しかし、それはビジネス層であってはなりません。必要なヘッダー値を提供するサービスを作成します。そのクラスはコンテキストを取ります。クラス抽象化はビジネスクラスの依存関係になります – Nkosi
実際には、現時点でコンテキストを取り込んでいるサービスクラスです。おそらくここではもっと具体的だったはずですが、ビジネスロジッククラスを参照することによって、私は実際にコントローラやアクションではないことを明確にしようとしていました。だから一般的に、HTTPコンテキストにアクセスするサービスを回すことは、あなたが推奨しているようです? –