2017-09-20 17 views
2

IHttpContextAccessor注射のすべての例では、シングルトンとして設定されています。IHttpContextAccessorをシングルトンとして注入する理由

例:

How to add IHttpContextAccessor in the Startup class in the DI in ASP.NET Core 1.0? Injecting IHttpContextAccessor into ApplicationDbContext ASP.NET Core 1.0 .NET Core IHttpContextAccessor issue

HttpContextが本当に要求にマップ何かの​​ように見えるので、私は、それはちょっと奇妙見つけます。この場合、AddScopedより適切でしょうか?

シングルトンは本当に推薦された方法ですか?私は何か見ていないのですか?

答えて

2

シングルトンは本当に推薦された方法ですか?

はい

GitHubの

そのサンプルで

https://github.com/aspnet/Hosting/issues/793#issuecomment-224828588

に引き上げ問題に関連したコメントによると、あなたはシングルトンとして登録されています。スコープ付きのインスタンスではありませんか?

バッキングストアが非同期ローカルなので、シングルトンでも問題ありません。あなたは.NETのコア上の過渡として登録した場合、.NETのコアの実装が使用されているので、それが正常に動作しない実際に後で返信

https://github.com/aspnet/Hosting/issues/793#issuecomment-224924030

を得た

インスタンス変数に依存してTLSストレージスロットを追跡するAsyncLocal。だから、.NETコアにシングルトンとして登録する必要があります。

+0

「.NETコアは、インスタンス変数を使用してTLSストレージスロットを追跡するAsyncLocalを使用しています。しかし、質問に答えました!ありがとう。 –

関連する問題