Ninject 3 InRequestScope不为同一请求返回相同的实例
最近,我将我的一个MVC3项目从Ninject 2升级到Ninject 3。
在几分钟后试图找到为什么InRequestScope不再可用,我发现这现在是Ninject.Web.Common的扩展。
现在,当我尝试运行应用程序时,Ninject的工作方式就像所有与范围InRequest绑定的类型都是InTransientScope; 每次都会创建一个新实例。
在我inheritance自NinjectModule的类中,我有一个简单的绑定:
Bind().ToSelf().InRequestScope();
在我的控制器中,我有2个标有Ninject属性的ViewModel.Activity类型的属性。
[Inject] public ViewModel.Activity Activity { get; set; } [Inject] public ViewModel.Activity Activity1 { get; set; }
如果我在调试模式中查看两个属性的HashCode的值,那么它们都有不同的值,但HttpContext是相同的; 我在同一个请求中。
我错过了如何使用Ninject 3的新版本正确使用新的Ninject.Web.Common.InRequestScope?
非常感谢你。
添加为答案,因此可以关闭
不要使用自定义工厂。 只需安装Ninject.MVC3并将绑定复制到NinjectWebCommon.cs文件,然后删除所有旧代码。
Ninject.Web.Common不能单独使用。 您必须使用一些额外的web或wcf扩展或自己实现InRequestScope。