2016-09-19 7 views
0

요청별로 서비스 범위를 지정하려고합니다. 그러나 삽입 된 서비스는 항상 부모/루트 컨테이너로 범위가 지정된 것으로 보이며 이후 요청은 이전 요청에서 상태.asp.net 코어를 사용하여 구조 요청/중첩 컨테이너를 구성하십시오.

내 시작 클래스

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

같은 레지스터에 서비스를 등록에서 설정을 사용자 정의 StructureMap 컨테이너를했습니다;

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

내가 놓친 게 무엇인지에 모든 포인터? 감사합니다.

답변

1

직접 RequestServices 속성을 연결해야합니다. ASP.NET 호스트는 이미이를 수행합니다. 기존 RequestServices 공급자에서 필요한 것을 해결하십시오.