【发布时间】:2011-01-18 09:26:42
【问题描述】:
我已经阅读了很多关于这方面的信息,但我找不到任何最新的信息(截至 2011 年 1 月),关于现在应该如何做到这一点。我已经阅读了一些似乎有答案的好帖子,但没有详细信息。较早的 pre-unity-2 方法主要创建自定义生命周期管理器。现在看来最好的方法是use a child container that is created at the beginning of the request and disposed at the end of the request, using container-managed lifetime。另一个人说他们已经使用hierarchical lifetime with createchildcontainer 实现了这一目标。
我发现的大部分材料都说要在 Application_BeginRequest 期间创建子容器,我已经尝试过了。这不起作用,因为我的控制器工厂(来自 MvcContrib 的 IoCControllerFactory)使用在 Application_Start 期间注册的容器(MvcContrib 中 IDependencyResolver 的实现),这是默认/根容器。
我在 web.config 中进行了统一设置,并且可以创建子容器,但我似乎无法让任何控制器将它们用于 DI 来为每个请求创建单例。我是否需要创建一个特殊的容器来在控制器工厂中使用,而不是根?它应该是容器管理的还是分层的?我不应该在每个请求上都重新设置 DependencyResolver,不是吗?
【问题讨论】:
标签: asp.net-mvc dependency-injection unity-container global-asax object-lifetime