C# Ninject.Web.MVC4只处理我的DbContext一次
我知道有半打相同的问题。我已经听从了他们的建议,但我仍然被困住了C# Ninject.Web.MVC4只处理我的DbContext一次,c#,entity-framework,asp.net-mvc-4,ninject,ninject.web.mvc,C#,Entity Framework,Asp.net Mvc 4,Ninject,Ninject.web.mvc,我知道有半打相同的问题。我已经听从了他们的建议,但我仍然被困住了 我使用NuGet安装了Ninject.Web.MVC4,并将绑定添加到NinjectWebCommon.RegisterServices 我已手动将以下内容添加到system.web/httpModules 我的装订: Bind<IDataContext>().To<DataContext>().InRequestScope(); 关于我应该从这里走到哪里,有什么建议吗?可能与此相关:您是否确保使用了最新
Ninject.Web.MVC4
,并将绑定添加到NinjectWebCommon.RegisterServices
Bind<IDataContext>().To<DataContext>().InRequestScope();
关于我应该从这里走到哪里,有什么建议吗?可能与此相关:您是否确保使用了最新的ninject.web.common?(v3.2.2,而不是3.2.0!)为什么要添加http模块?你不应该。。。使用Ninject时,除了绑定之外,不需要任何配置。MVC4@BatteryBackupUnit我重新安装了Ninject.MVC4及其所有依赖项,而只是将我的绑定添加到
NinjectWebCommon.RegisterServices
不起作用,将它们包装在globalkernelregistration模块中
起作用了@ErikFunkenbusch如果只是像广告宣传的那样装订,我就不会在这里问了。添加http模块是我遵循的一个类似Q/a的建议。@epalm-在使用Ninject.Web.Common时不应使用http模块,因为它们执行相同的操作。你最终注册了两次!HttpModule是执行此操作的“老”方法。Common是新的“无配置”方式。看见
public class DataContext : DbContext, IDataContext
{
private Guid guid;
public DataContext()
{
guid = Guid.NewGuid();
Trace.TraceInformation("DataContext Constructing " + guid.ToString());
}
protected override void Dispose(bool disposing)
{
Trace.TraceInformation("DataContext Disposing " + guid.ToString());
base.Dispose(disposing);
}
}
Bind<IDataContext>().To<DataContext>().InRequestScope();
DataContext Constructing aa349c66-1a64-4037-a7cb-8b51974b86fe
DataContext Disposing aa349c66-1a64-4037-a7cb-8b51974b86fe
DataContext Constructing b37c4a4b-6f6a-4d43-94c6-ae701af91e43
DataContext Constructing ef388648-2b9e-40dd-8542-48c008df61d4
DataContext Constructing 18e245fd-e09c-49da-b901-4f59d770d130
DataContext Constructing 50d86e33-5e17-4a6c-81df-f6a0d49591ab
DataContext Constructing 87ad5075-ad0d-4d30-a200-b211764a25ef