0

好的,我将 StructureMap 连接到我的 Web Api 应用程序(在 StackOverflow 和 Internet 上的其他地方有大量示例如何执行此操作)。我对 Web Api 中对象生命周期维护的理解是它是通过嵌套容器完成的。

对于通过嵌套容器进行对象生命周期维护的整个想法,Raven 的会话对象必须在子容器中创建为瞬态单例。现在我已经IDocumentStore在父容器中定义并限定为单例。IDocumentSession也在父容器中定义,但范围为 HttpContext。当请求进来时,BeginScope()被调用,嵌套容器被创建,但IDocumentSession其中的对象是从父级继承的,而不是被创建的。

我不明白这应该如何工作。如果对象不是在子容器中作为瞬态单例创建的,而是从父容器继承的,那么当嵌套容器被释放时,它将返回到父容器。这会破坏整个想法。另一方面,如果要在嵌套容器中创建会话作为瞬态单例,那么如何实现呢?如何验证此类设置的正确性?

4

1 回答 1

1

如果我将 IDocumentSession 设置为 Per Web Request 那么为什么首先需要嵌套容器?

在这种情况下不需要嵌套容器。

一般来说,对嵌套容器本身的需求甚至是值得怀疑的。甚至Castle Windsor (支持子容器的容器)的设计者也在考虑在下一个版本的 Castle Windsor 中一起取消对子容器的支持。

于 2012-10-25T20:30:44.363 回答