我将 NuGet 的 ninject 与 MVC 4 应用程序一起使用
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 的 dispose 方法中的断点)
我还通过删除来清除 app_start,NinjectWebCommon.cs
因为我认为我已经正确设置了 Ninject.... 似乎没有。
我做错什么了 ?
提前致谢