Привязка Ninject проблема с постоянным значением в MVC3 с сеансом RavendB

StackOverflow https://stackoverflow.com/questions/4611832

  •  26-09-2019
  •  | 
  •  

Вопрос

Я видел много разных способов настройки Ninject с ASP.NET MVC, но реализация незначительно меняется с каждым выпуском MVC Framework. Я пытаюсь ввести сеанс 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);
    }
}

Когда он пытается разрешить IDOCментов, я получаю следующую ошибку.

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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top