好的,我将StructureMap连接到我的Web Api应用程序(大量示例如何在StackOverflow和Internet上的其他地方执行此操作)。我对Web Api中对象生命周期维护的理解是它是通过嵌套容器完成的。
对于通过嵌套容器维护对象生命周期的整个想法,Raven的会话对象必须在子容器中创建为瞬态单例。现在我在父容器中定义了IDocumentStore
,并且作为单例定义。 IDocumentSession
也在父容器中定义,但作用域为HttpContext。当请求进入时,调用BeginScope()
,创建嵌套容器,但其中的IDocumentSession
对象是从父项继承而不是创建的。
我不明白这是怎么回事。如果未在子容器中将对象创建为临时单例,而是从父级继承,则在放置嵌套容器时它将返回到父级。然后这就打败了整个想法。另一方面,如果要在嵌套容器中创建会话作为瞬态单例,那么如何实现呢?如何验证此类设置的正确性?
答案 0 :(得分:1)
如果我将IDocumentSession设置为Per Web Request那么为什么需要 首先是嵌套容器?
在这种情况下不需要嵌套容器。
一般来说,对嵌套容器的需求甚至是值得怀疑的。在下一版本的温莎城堡中,甚至the designer of Castle Windsor(一个支持子容器的容器)is considering to remove support for child containers。