使用asp.net核心配置每个请求/嵌套容器StructureMap使用asp.net核心

问题描述:

我试图限制我的服务每个请求的基础上,但我注入的服务总是似乎是作用域父/根容器,随后的请求看到从以前的请求状态。使用asp.net核心配置每个请求/嵌套容器StructureMap使用asp.net核心

我设置一个自定义StructureMap容器​​在我的启动类

// Wireup the container 
Container = new Container(); 
Container.Configure(config => 
{ 
    // register the dotnet framework registered services into our container 
    config.Populate(services); 

    // Import all the registries 
    config.Scan(scanner => 
    { 
     scanner.TheCallingAssembly(); 
     scanner.LookForRegistries(); 
    }); 
}); 

return Container.GetInstance<IServiceProvider>(); 

注册在注册为服务;

For<ITest>().Use<Test>().ContainerScoped(); 

然后wiredup以下中间件

var container = serviceProvider.GetRequiredService(typeof(IContainer)) as IContainer; 
if (container != null) 
{ 
    using (var requestContainer = container.GetNestedContainer()) 
    { 
     context.RequestServices = requestContainer.GetInstance<IServiceProvider>(); 
     await _next.Invoke(context); 
    } 
} 
else 
{ 
    await _next.Invoke(context); 
} 

任何指针,以我缺少的是什么? 谢谢

有没有必要自己连线RequestServices属性。 ASP.NET主机已经为你做到了。只需从现有的RequestServices供应商处解决您的需求即可。