【问题标题】:How to inject dependencies per http request (or per http context) with unity 2.0 and asp.net mvc如何使用 unity 2.0 和 asp.net mvc 为每个 http 请求(或每个 http 上下文)注入依赖项
【发布时间】: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


    【解决方案1】:

    试试http://mvcunity.codeplex.com/或下载源代码看看是怎么做的。

    【讨论】:

    • 是的,我最终从那个项目中借用了 HttpContextLifetimeManager。它无需对我的 mvc 依赖解析器配置进行任何更改即可工作。
    猜你喜欢
    • 2015-08-09
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多