2016-09-19 5 views
0

Ich versuche, meine Dienste pro auf Anfrage Basis, aber meine injizierten Dienste scheinen immer auf den übergeordneten/root-Container beschränkt sein, und nachfolgende Anfragen sehen die Zustand aus einer vorherigen Anfrage.Konfigurieren pro Anfrage/verschachtelten Container StructureMap mit asp.net Kern

Ich habe Setup einen benutzerdefinierten StructureMap Container in meiner Startklasse

// 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>(); 

in einem Register einen Dienst registrieren, wie;

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

Dann wiredup die folgende Middleware

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); 
} 

Alle Hinweise, was mir fehlt? Danke

Antwort

1

Es besteht keine Notwendigkeit, die Eigenschaft selbst zu verdrahten. Der ASP.NET-Host erledigt das bereits für Sie. Lösen Sie einfach, was Sie von dem vorhandenen Anbieter benötigen.