私は、選択した IoC コンテナーとして Autofac を使用しています。この質問の残りの部分は、SignalR と組み合わせて SignalR を参照しますが、答えるのに実際の SignalR の知識は必要ありません。これは、Autofac に根ざした問題です。
Autofac を SignalR の依存関係リゾルバーとして使用する一環として、自分の好きなように構成された独自の IJsonSerializer インスタンスを提供したいと考えています。ただし、その IJsonSerializer インスタンスを残りのソフトウェア全体で共有したくはありません。
これを実現するために、登録を追加して新しいライフタイム スコープを作成し、そのスコープを依存関係リゾルバーに提供しました。これが私の問題が始まったときです。
私が気付いていなかったのは、これを行うことで、以前にルートコンテナーから取得されていた SignalR から要求されたインスタンスごとのライフタイムスコープの依存関係が、現在はライフタイムスコープから要求されているため、SignalR 全体で共有されていることです。これは良くない。たとえば、存続期間の短いデータベース セッションは、アプリケーションの存続期間中共有されるようになりました。
ライフタイム スコープごとのインスタンスの依存関係に、基本的に、SignalR に渡すライフタイム スコープを使用して依存関係を再利用してはならないふりをさせるにはどうすればよいですか? または、ライフタイムスコープを完全に作成しないようにするにはどうすればよいですか?