Ninject问题MVC3用RavenDB会话和恒定值
-
26-09-2019 - |
题
我已经看到了很多与ASP.NET MVC配置Ninject不同的方式,但执行似乎与MVC框架的每个版本略有变化。我试图注入RavenDB会话进入我的仓库。以下是我有这几乎工作。
public class MvcApplication : NinjectHttpApplication
{
...
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new MyNinjectModule());
}
public static IDocumentSession CurrentSession
{
get { return (IDocumentSession)HttpContext.Current.Items[RavenSessionKey]; }
}
...
}
public class MyNinjectModule : NinjectModule
{
public override void Load()
{
Bind<IUserRepository>().To<UserRepository>();
Bind<IDocumentSession>().ToConstant(MvcApplication.CurrentSession);
}
}
当它试图解决IDocumentSession,我碰到下面的错误。
Error activating IDocumentSession using binding from IDocumentSession to constant value
Provider returned null.
Activation path:
3) Injection of dependency IDocumentSession into parameter documentSession of constructor of type UserRepository
这是如何使IDocumentSession解决任何想法?
解决方案
ToConstant(MvcApplication.CurrentSession)
在应用程序启动评价。你想要的是延迟评估ToMethod(ctx => MvcApplication.CurrentSession)
不隶属于 StackOverflow