2013-03-28 133 views
0

我用ninject从的NuGet与MVC 4应用程序Ninject MVC InRequestScope

public class MvcApplication : System.Web.HttpApplication 

我知道我可以用一个ninject类作为BAS类,但我没有。

以我的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)。和应用程序运行良好......但似乎永远不会处置(在VIPRepository的处置方法中的断点)

我也通过删除NinjectWebCommon.cs清除app_start因为我认为我已正确设置Ninject ....似乎不是。

我做错了什么?

在此先感谢

回答

相关问题