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。