【问题标题】:Ninject mvc InRequestScopeNinject mvc InRequestScope
【发布时间】:2013-03-28 12:08:29
【问题描述】:

我在一个 MVC 4 应用程序中使用来自 NuGet 的 ninject

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 方法中的断点)

我还通过删除 NinjectWebCommon.cs 来清除 app_start,因为我认为我已经正确设置了 Ninject.... 似乎没有。

我做错了什么?

提前致谢

【问题讨论】:

    标签: asp.net-mvc ninject.web.mvc


    【解决方案1】:

    我建议您查看这篇关于 MVC 3 / 4 的 Ninject nuget 包的优秀且易于关注的帖子:Implementing Dependency Injection in Asp.NET MVC 4 using NInject DI Container

    使用 nuget 包,设置看起来非常简单,可以在 30 秒内完成。

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 2020-02-21
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多