我使用 Autofac 作为我选择的 IoC 容器。这个问题的其余部分指的是 SignalR 与 SignalR 的结合,但不需要真正的 SignalR 知识来回答;这是一个源于 Autofac 的问题。
作为使用 Autofac 作为 SignalR 的依赖解析器的一部分,我想提供我自己的 IJsonSerializer 实例,配置我喜欢的方式。但是,我不想让 IJsonSerializer 实例在软件的其余部分中共享。
为此,我使用附加注册创建了一个新的生命周期范围,并将该范围提供给依赖解析器。这是我的问题开始的时候。
我没有意识到的是,通过这样做,以前从根容器中检索到的 SignalR 请求的每生命周期实例依赖项现在正在从生命周期范围请求,因此在整个 SignalR 中共享。不是很好。例如,短期数据库会话现在在我的应用程序的生命周期内共享。
如何使我的每生命周期实例范围依赖项基本上假装我传递给 SignalR 的生命周期范围不应该用于导致这些依赖项被重用?或者,我怎样才能完全避免创建生命周期范围?