1

我有 Nancy 和 Nancy.Bootstrappers.Ninject 的简单应用程序。我们必须使用 Ninject,因为 Web 应用程序是已经使用 Ninject 的更大应用程序集的一部分。

我尝试了不同的设置:

  • 只是NancyNancy.Bootstrappers.Ninject
  • With Ninject.Web.CommonHttpModules使用 web activator注册两个
  • 通过覆盖GetApplicationContainer()并返回创建的内核Ninject.Web.Common

绑定很简单

protected override void ConfigureRequestContainer(IKernel kernel, NancyContext context)
{
    kernel.Bind<IRepository>().To<Repository>().InRequestScope();
}

并且位于我的自定义 Nancy 引导程序中。IRepository扩展IDisposable,当然。

但是这些设置都不是Dispose()Repository调用的方法。

Dispose()设置请求完成后调用的每个请求绑定的正确方法是什么?

4

1 回答 1

2

知道了。https://github.com/NancyFx/Nancy.Bootstrappers.Ninject上提供的信息似乎还不够。我在https://github.com/NancyFx/Nancy/wiki/Container-Support上找到了以下内容:

ConfigureRequestContainer() 中的 container 参数是一个子容器,在请求结束时被放置。

这里的容器是一个子容器。即这里的单例在请求范围内。

显然,InSingletonScope()是必需的,以便按请求内核处理对象。使用该解决方案,甚至不需要所有 Ninject.Web 的东西!

于 2013-05-29T21:03:08.397 回答