使用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
供应商处解决您的需求即可。