Asp.net core Autofac-作用域和子作用域中的共享实例
我有一个ASP.NET Core 2.2应用程序,我想为请求将服务配置为“单例”。只要不创建子作用域,就可以使用InstancePerLifetimeScope。有些进程在从请求范围创建的子范围中运行 在ASP.NET Core 2.2中使用InstancePerRequest不起作用(这基本上就是我需要的) 是否有人遇到这种情况并找到了解决方案Asp.net core Autofac-作用域和子作用域中的共享实例,asp.net-core,autofac,asp.net-core-2.2,Asp.net Core,Autofac,Asp.net Core 2.2,我有一个ASP.NET Core 2.2应用程序,我想为请求将服务配置为“单例”。只要不创建子作用域,就可以使用InstancePerLifetimeScope。有些进程在从请求范围创建的子范围中运行 在ASP.NET Core 2.2中使用InstancePerRequest不起作用(这基本上就是我需要的) 是否有人遇到这种情况并找到了解决方案 using(var scope1 = container.BeginLifetimeScope()) { var w1 = scope1.Re
using(var scope1 = container.BeginLifetimeScope())
{
var w1 = scope1.Resolve<Worker>(); // should resolve worker 1
using(scope2 = scope1.BeginLifetimeScope())
{
var w2 = scope2.Resolve<Worker>(); // should resolve same worker as w1
}
}
using(scope3 = container.BeginLifetimeScope())
{
var w3 = scope3.Resolve<Worker>(); // should resolve another worker
}
使用(var scope1=container.BeginLifetimeScope())
{
var w1=scope1.Resolve();//应解析工作进程1
使用(scope2=scope1.BeginLifetimeScope())
{
var w2=scope2.Resolve();//应解析与w1相同的工作进程
}
}
使用(scope3=container.BeginLifetimeScope())
{
var w3=scope3.Resolve();//应解析另一个工作进程
}
看起来您可能希望将工作者定义为InstancePerMatchingLifetimeScope
,然后使用与您注册的工作者
相同的ID标记外部范围
请参阅标记范围上的文档: