代码之家  ›  专栏  ›  技术社区  ›  J.W.

在NInject中绑定MembershipProvider时是否应该使用InSingletonScope?

  •  10
  • J.W.  · 技术社区  · 16 年前

    • 瞬时行为 -每次请求一个实例时,都将创建该类型的新实例。
    • -将只创建该类型的单个实例,并且将为每个后续请求返回相同的实例。
    • 单线程行为 -每个线程将创建一个该类型的实例。
    • -每个web请求将创建一个该类型的实例,并在请求结束时销毁。

    如果我想将MembershipProvider绑定到SqlMembershipProvider,我是否应该使用SingletonBehavior,因为我只需要一个sql成员资格提供程序?

    1 回复  |  直到 16 年前
        1
  •  13
  •   Peter Meyer    16 年前

    ASP.Net已经通过静态提供程序提供了当前成员资格提供程序的静态实例 会员 供应商 所有物绑定可能位于应用程序的启动方法中,如下所示:

    Bind<MembershipProvider>()
      .ToMethod(ctx => Membership.Provider);
    

    再说一次,因为 会员资格。提供者

    通过在上述代码段中不指定任何行为,Ninject将默认为瞬态行为。在这种绑定中,我相信这相当于调用返回的lambda 会员资格。提供者 每次它需要注入一个 类型

    我想可能有一个参数用于显式指定单例行为,因为Ninject可能会“缓存”lambda在第一次需要注入 会员资格提供者

    尽管如此,我个人的偏好是使用 OnePerRequestBehavior ,这样我就知道Ninject会为每个请求调用我的lambda一次。不确定是否有必要,但我喜欢从 会员资格。提供者 准备好了,不过你可能会发现,如果你用反射器挖得够多的话。

    Bind<MembershipProvider>()
      .ToMethod(ctx => Membership.Provider)
      .Using<OnePerRequestBehavior>();
    

    祝你好运对不起,你的问题在这里放了这么久!

    推荐文章