2013-03-28 3 views
0

J'utilise ninject de NuGet avec une application MVC 4Ninject mvc InRequestScope

public class MvcApplication : System.Web.HttpApplication 

Je sais que je aurais pu utiliser une classe ninject comme classe bas, mais je ne.

Dans mes Global.asax.cs je

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

Dans mon web.config je charge le module (et vérifier qu'il est bien chargé)

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

Mon contrôleur dérive de BaseController(IVIPRepository repo). Et l'application fonctionne bien ... mais il semble que les référentiels (et donc le contexte associé) ne sont jamais éliminés (point d'arrêt dans la méthode disposer de la VIPRepository)

J'ai également effacer l'app_start en supprimant NinjectWebCommon.cs parce que je pense que je avoir correctement configuré Ninject .... Il ne semble pas.

Qu'est-ce que j'ai fait de mal?

Merci à l'avance

Répondre

Questions connexes