Ninject mvc InRequestScope

Я использую ninject из NuGet с приложением MVC 4.

public class MvcApplication : System.Web.HttpApplication

Я знаю, что мог бы использовать класс ninject как базовый класс, но я этого не сделал.

В моем global.asax.cs я

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

где

public class NinjectControllerFactory : DefaultControllerFactory  {
    private IKernel _ninjectKernel;

    public NinjectControllerFactory() {
        _ninjectKernel = new StandardKernel();
        AddBindings();
    }

    public T GetInstance<T>() {
        return _ninjectKernel.Get<T>();
    }

    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) {
        return controllerType == null
            ? null
            : (IController)_ninjectKernel.Get(controllerType);
    }

    private void AddBindings() {
        _ninjectKernel.Bind<IVIPRepository>().To<VIPRepository>().InRequestScope().
            WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["VIPFullContext"].ConnectionString);
        _ninjectKernel.Bind<IPrezentationProvider>().To<HardPrezProvider.HardPrezentationProvider>().InRequestScope(); ;
    }
}

В моем web.config я загружаю модуль (и проверяю, хорошо ли он загружен)

<system.webServer>
    <modules>
        <add name="OnePerRequestHttpModule" type="Ninject.Web.Common.OnePerRequestHttpModule"/>
    </modules>
</system.webServer>

Мой контроллер происходит от BaseController(IVIPRepository repo). И приложение работает хорошо ... но кажется, что репозитории (и, следовательно, связанный контекст) никогда не удаляются (точка останова в методе dispose VIPRepository)

Я также очищаю app_start, удаляя NinjectWebCommon.cs, потому что я думаю, что правильно настроил Ninject... Кажется, нет.

Что я сделал не так ?

заранее спасибо


person tschmit007    schedule 28.03.2013    source источник


Ответы (1)


Я рекомендую вам ознакомиться с этой отличной и простой в использовании публикацией о пакете Ninject nuget для MVC 3/4: Реализация внедрения зависимостей в Asp.NET MVC 4 с использованием NInject DI Container

С пакетом nuget установка кажется настолько простой, что ее можно выполнить за 30 секунд.

person BladeLeaf    schedule 15.04.2013