problème ninject se liant à valeur constante en MVC3 avec une session RavenDB
-
26-09-2019 - |
Question
Je l'ai vu beaucoup de différentes façons de configurer Ninject avec ASP.NET MVC, mais la mise en œuvre semble changer légèrement avec chaque version du framework MVC. Je suis en train d'injecter une session RavenDB dans mon dépôt. Voici ce que j'ai qui est presque travail.
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);
}
}
Quand il tente de résoudre IDocumentSession, je reçois l'erreur suivante.
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
Toutes les idées sur la façon de faire la volonté de IDocumentSession?
La solution
ToConstant(MvcApplication.CurrentSession)
est évalué au démarrage de l'application. Ce que vous voulez est ToMethod(ctx => MvcApplication.CurrentSession)
d'évaluation retardée
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow