Signalr 使用DbContext的简单注入器生存时间范围

Signalr 使用DbContext的简单注入器生存时间范围,signalr,simple-injector,Signalr,Simple Injector,我使用的是simpleInjector 2.8.0.0,我只想在生命周期范围内构造dbContext的一个实例。 (我的依赖项链在IDatabaseContext/DbContext上有2个依赖项) 我有一个范围修饰符,它实现了生存期范围(范围修饰符被注入到SignalRHub中): 使用(ServiceHost.Container.BeginLifetimeScope()) { var commandHandler=ServiceHost.Container.GetInstance(); //

我使用的是simpleInjector 2.8.0.0,我只想在生命周期范围内构造dbContext的一个实例。 (我的依赖项链在IDatabaseContext/DbContext上有2个依赖项)

我有一个范围修饰符,它实现了生存期范围(范围修饰符被注入到SignalRHub中):

使用(ServiceHost.Container.BeginLifetimeScope())
{
var commandHandler=ServiceHost.Container.GetInstance();
//构造2个DBContext。
Handle(command);
}
我拥有IDatabaseContext的终生范围注册:

        container.RegisterLifetimeScope<IDatabaseContext, DatabaseContext>();
container.RegisterLifetimeScope();

但是,我可以看到(从Guid)我正在范围内创建IDatabaseContext/DbContext的两个实例。

您确定这是同一个范围吗?要么是嵌套作用域,要么就是看到两个实际的请求正在被处理。在调试器中,您可能可以查看请求信息,例如通过检查
HttpContext.Current.request.Url
属性。

谢谢。你说得对,我想是两个信号员的请求。是否要将其添加为答案
        container.RegisterLifetimeScope<IDatabaseContext, DatabaseContext>();