我試圖找出如何設置StructureMap3配置,即在既有的WebAPI,並在控制檯應用程序的工作,如:StructureMap3 HybridHttpOrThreadLocalScoped沒有HttpSessionState
For<ISession>().HybridHttpOrThreadLocalScoped().Use(p => p.GetInstance<TestingContainer>().GetSession());
對於控制檯應用程序,我想的對象只要線程存活,只要http會話存在,就可以存活。
這可能與MVC網站有關,因爲HybridHttpOrThreadLocalScoped使用HttpSessionState來確定是創建新實例還是重用現有實例。
WebApi沒有這個HttpSessionState,因此HybridHttpOrThreadLocalScoped將不起作用。
如果我不在乎控制檯應用程序,那麼我可能會用Transient()或AlwaysUnique或類似的配置結構圖。
那麼,當沒有HttpSessionState實例時,相當於HybridHttpOrThreadLocalScoped是什麼。
謝謝。
編輯
-to重新安排的問題...
從某種意義上說,我同意你的邏輯,但是如果你在同一個嵌套容器中創建兩個線程會發生什麼?我想我們不希望嵌套容器和線程之間存在依賴關係,我們必須記住爲每個新線程創建了一個新的嵌套容器,或者....? –