Asp.net mvc 如何使用unity 2.0和asp.net mvc为每个http请求(或每个http上下文)注入依赖项

Asp.net mvc 如何使用unity 2.0和asp.net mvc为每个http请求(或每个http上下文)注入依赖项,asp.net-mvc,dependency-injection,unity-container,global-asax,object-lifetime,Asp.net Mvc,Dependency Injection,Unity Container,Global Asax,Object Lifetime,我已经阅读了很多关于这方面的信息,但我找不到任何最新的(截至2011年1月)关于现在应该如何做到这一点的信息。我读过几篇很好的帖子,似乎有答案,但没有细节。较旧的unity-2之前的方法大多创建自定义的生命周期管理器。现在看来最好的办法就是去做。另一个人说他们已经通过使用 我找到的大多数材料都说是在应用程序_BeginRequest期间创建子容器的,我已经尝试过了。这不起作用,因为我的控制器工厂(来自MvcContrib的IoCControllerFactory)使用在应用程序启动期间注册的容器

我已经阅读了很多关于这方面的信息,但我找不到任何最新的(截至2011年1月)关于现在应该如何做到这一点的信息。我读过几篇很好的帖子,似乎有答案,但没有细节。较旧的unity-2之前的方法大多创建自定义的生命周期管理器。现在看来最好的办法就是去做。另一个人说他们已经通过使用

我找到的大多数材料都说是在应用程序_BeginRequest期间创建子容器的,我已经尝试过了。这不起作用,因为我的控制器工厂(来自MvcContrib的IoCControllerFactory)使用在应用程序启动期间注册的容器(MvcContrib中IDependencyResolver的实现),这是默认/根容器


我在web.config中设置了unity,我可以创建子容器,但我似乎无法让任何控制器使用它们来为DI创建每个请求的单例。我是否需要创建一个特殊的容器来在控制器工厂中使用,而不是在根目录中使用?它应该是容器管理的还是分层的?我不应该在每个请求上都重新设置DependencyResolver,是吗?

尝试或下载源代码,看看它是如何完成的。

尝试或下载源代码,看看它是如何完成的。

是的,我最终从那个项目借用了HttpContextLifetimeManager。它可以在不改变mvc依赖项解析器配置的情况下工作。是的,我最终从那个项目借用了HttpContextLifetimeManager。它可以在不更改mvc依赖项解析器配置的情况下工作。