【问题标题】:Ninject InRequestScope missingNinject InRequestScope 丢失
【发布时间】:2011-10-18 05:17:47
【问题描述】:

关于 ninject 的最新版本 (2.2.1.4) 有几个问题。

试图将 Linq2sql DataContext 绑定到具体实现 InRequestScope(在类库项目中)

Bind<DataContext>().To<MoneywatchDataContext>()

但找不到InRequestScope方法

最终做到了,

Bind<DataContext>().To<MoneywatchDataContext>().InScope(ctx => HttpContext.Current)

只是想知道是否:

  1. 如果它的行为与InRequestScope 方法完全相同。
  2. 这将保证当我的HTTContext.Current 被GC'ed 时,底层DataCotext 也将被处理掉。

【问题讨论】:

    标签: c# binding ninject ninject-2


    【解决方案1】:

    InRequestScope 可作为 Ninject.Web.Common 中的扩展方法使用。因此,如果之前通过 Nuget(Ninject 包)安装,现在我们可能需要安装额外的 nuget 包 Ninject.Web.Common

    【讨论】:

    • 请记住,您需要在配置模块类的项目上安装此包。我在 MVC 项目中安装它时遇到问题,但我放置 Bind&lt;&gt;().To&lt;&gt;().InRequestScope(); 的模块在 Infrasturure 项目中。我花了一段时间才意识到这一点。
    • 就是这样!谢谢。
    【解决方案2】:
    using Ninject.Web.Common;    // that's most likely all you need
    

    【讨论】:

    • 这是帮助我的实际答案。
    • (这会导入包含扩展方法的命名空间)
    【解决方案3】:

    您很可能引用了 Ninject 的非网络版本。将其替换为普通版本,您将拥有 InRequestScope 扩展方法。

    【讨论】:

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