将Unity.Mvc3与Mvc 3应用程序一起使用,我可以注册我的container.RegisterType<IDummyService, DummyService>(new HierarchicalLifetimeManager());
,如下所示:
IDummyService
在每个Web请求上,创建了我的IDummyService
的新实例(如此article中所述),但自从我将Mvc 3升级到Mvc 4并将Unity.Mvc3升级到Unity.Mvc ,创建单个实例并在所有Web请求中使用,直到重新启动应用程序。基本上,使用HierarchicalLifetimeManager
时,{{1}}是Mvc 4应用程序中的单例。对我来说,很难相信这是Unity.Mvc中的新行为。
对此有更好的解释吗?
答案 0 :(得分:5)
Unity.Mvc3和Unity.Mvc由两个不同的组织创建,具有不同的实现。
Unity.Mvc3为每个Web请求创建一个子容器。这适用于内置HierarchicalLifetimeManager
。
Unity.Mvc不会创建子容器,而是选择创建一个名为PerRequestLifetimeManager
的新LifetimeManager。