返回同一个实例最近,我升级我的MVC3项目从Ninject 2至3 NinjectNinject 3 InRequestScope不相同请求
之一几分钟试图找到为什么InRequestScope是不再使用后,我发现这是Ninject.Web.Common的扩展。现在,当我尝试运行应用程序时,Ninject的工作原理就好像所有绑定范围InRequest的类型都是InTransientScope;每次都创建一个新实例。
以我类从NinjectModule继承,我有一个简单绑定这样的:
Bind<ViewModel.Activity>().ToSelf().InRequestScope();
以我控制器,I有标有Ninject属性类型ViewModel.Activity的2个属性。
[Inject]
public ViewModel.Activity Activity { get; set; }
[Inject]
public ViewModel.Activity Activity1 { get; set; }
如果我在调试模式下都看着这两个属性的hashCode的价值,也都有着不同的价值,但HttpContext的是相同的;我在同一个请求。
我错过了如何正确使用新版Ninject 3的新Ninject.Web.Common.InRequestScope?
非常感谢。
你如何将Ninject连接到你的代码?您是否使用nuget中的Ninject.MVC3,然后编辑NinjectWebCommon.cs文件?或者你在做自定义控制器工厂? –
定制工厂 – Samuel
@MystereMan非常感谢。这正是我想要的。我使用NuGet来查找Ninject MVC3,并在NinjectWebCommon中添加您所说的绑定我的依赖关系的工具。我认为这项工作的关键在于以下几行:DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));和DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); OnePerRequestHttpModule也将在每次请求后立即处理我的所有工作单元。非常感谢你! – Samuel