NancyFX模块正在被自举后,立即设置

问题描述 投票:1回答:2

我已经写了使用南希1.4.5具有单NancyModule一个简单的应用程序。我使用的南希自使用默认的引导程序托管。

我想处置所有的南希模块的,重新发现他们,如果该应用程序配置(例如,当前的端口)的变化。一切似乎都在南希配置和重新构建的处置,除了在错误的时间被称为重新发现远的工作。处置似乎被称为NancyModules的发现过程的一部分。

在我的应用程序启动时,我叫下面的代码:

_host = new NancyHost(hostConf, new Uri($"http://localhost:{Port}")); _host.Start();

在我NancyModule我已经实现了IDisposable。

只要NancyHost构造(开始前()被调用),我看到NancyModule Dispose方法被击中。

任何帮助,将不胜感激。

nancy
2个回答
1
投票

更与TinyIOC容器注册玩后,我想通了,发生了什么事。

所述NancyModule实现类被构造/配置初始自动注册期间。它也被构造/配置每一个路由被称为时间。

这不是我的应用程序的理想行为的背后服务的支持是一个持续连接,并且每个路由被称为是加入〜100毫秒的响应时间各个申请时重新连接。

最终我实现了一个不必要的黑客,因为我不知道自己还能做些什么。我创建了可通过在单身一个功能复位的持续连接服务的静态单一实例。即使NancyModule每次调用路由期间建造这样一来,没有通过连接最多每次后端连接创出业绩。

它会更好,如果有设置NancyModule为TinyIOC单身注册的方式,但它似乎,即使我明确设置为这样进行自定义容器的注册,但仍在每次被调用时构造。


0
投票

你覆盖在你的引导程序ConfigureApplicationContainerConfigureRequestContainer

protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
    base.ConfigureApplicationContainer(container);

    // ...
}

protected override void ConfigureRequestContainer(TinyIoCContainer container, NancyContext context)
{
    base.ConfigureRequestContainer(container, context);

    // ...
}

documentation

  • ConfigureApplicationContainer - 执行引导程序时,这被称为一次,和用于注册,你要么希望有应用范围寿命(应用单身),或注册为多实例的依赖关系:
  • ConfigureRequestContainer - 这是每个请求调用一次,之前匹配路由模块解决,用于注册,将有一生的要求单身。
© www.soinside.com 2019 - 2024. All rights reserved.