Frage

Ich habe eine Menge verschiedener Möglichkeiten gesehen Ninject mit ASP.NET MVC zu konfigurieren, aber die Umsetzung scheint mit jeder Version der MVC-Framework etwas zu ändern. Ich versuche, eine RavenDB Sitzung in meinem Repository zu injizieren. Hier ist, was ich habe das ist fast zu arbeiten.

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);
    }
}

Wenn es versucht IDocumentSession zu lösen, ich die folgende Fehlermeldung erhalten.

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

Alle Ideen, wie die IDocumentSession Entschlossenheit zu machen?

War es hilfreich?

Lösung

ToConstant(MvcApplication.CurrentSession) wird bei Programmstart ausgewertet. Was Sie wollen, ist verzögert Auswertung ToMethod(ctx => MvcApplication.CurrentSession)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top