私はASP.NET Core API用のいくつかのロギングサービスを作成しています。
私はミドルウェアを書きました。これは、呼び出されているすべてのアクションをログに記録します(クロスカッティングの懸念、論理的に思われます)。コントローラの外部でHttpContextを使用する - 悪い習慣ですか?
私が記録したかったことの1つは、ユーザーのIP(たとえば)です。 私はそのデータを取得することが考えられる唯一の方法はHttpContext.Connection
です。
期待通りに機能しました。
But lately I've been readingもう少しで、私はコントローラー外のHttpContext
にアクセスすることは悪い習慣と考えられることを理解しています。 模擬や模倣が非常に難しいため、コードをテストすることはできません。
また、このコードは他の.NETアプリケーションに移植することもできず、ASP.NETアプリケーションのコンテキストで使用する必要があります。
私の質問は、コントローラの外でHttpContextを使用することは本当に悪いことですか?
もしそうなら、代替手段は何ですか?
HttpContext
ASP.NET内で使用されるコンポーネント(TOPレベルのコントローラやミドルウェアなど)が正当なものであるかどうかをご確認ください。
ありがとうございました。
です。あなたのドメイン層(=ドメインサービス)内でそれを参照する場合、ドメインはインフラストラクチャ(db、webservice、asp.net、wpf、uwpなどのホストなど)に依存する必要がないため、間違いなく最悪のことの1つです。 )。アプリケーション層(=アプリケーションサービス)で使用されている場合は問題ありません。違いは、アプリケーションレベルはアプリケーションに結びついており、ほとんどポータブルではない(つまり、httpcontext情報にアクセスすると、httpコンテキストがないためWPFでは動作しません) – Tseng
@Tseng、そうだと思います。だから、トップレベルのコントローラーやミドルウェアで使用するのがOKかどうかを尋ねたのは、ASP.Netのスコープ内にあるすべてのコードを意味します。 – DotnetProg