Ninject 3 InRequestScope不为同一请求返回相同的实例

Sam*_*uel 10 c# ninject ninject-extensions asp.net-mvc-3

最近,我将我的一个MVC3项目从Ninject 2升级到了Ninject 3.

在几分钟后试图找到为什么InRequestScope不再可用,我发现这现在是Ninject.Web.Common的扩展.

现在,当我尝试运行应用程序时,Ninject的工作方式就像所有与范围InRequest绑定的类型都是InTransientScope; 每次都创建一个新实例.

在我继承自NinjectModule的类中,我有一个简单的绑定:

Bind<ViewModel.Activity>().ToSelf().InRequestScope();
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我有2个标有Ninject属性的ViewModel.Activity类型的属性.

  [Inject]
  public ViewModel.Activity Activity { get; set; }

  [Inject]
  public ViewModel.Activity Activity1 { get; set; }
Run Code Online (Sandbox Code Playgroud)

如果我在调试模式中查看两个属性的HashCode的值,那么它们都有不同的值但是HttpContext是相同的; 我在同一个请求中.

我错过了如何使用Ninject 3的新版本正确使用新的Ninject.Web.Common.InRequestScope?

非常感谢你.

Eri*_*sch 10

添加为答案,因此可以关闭

不要使用自定义工厂.只需安装Ninject.MVC3并将绑定复制到NinjectWebCommon.cs文件,然后删除所有旧代码.


Rem*_*oor 7

Ninject.Web.Common不能单独使用.您必须使用一些额外的web或wcf扩展或自己实现InRequestScope.