我正在努力查看为什么南希在大约1分钟的时间内不接受请求。我大约有60个端点,所有这些端点都非常快地初始化,因此所有模块都得到了处理。

有共同的原因吗?还是有办法追踪正在发生的事情?

编辑

记录应用程序启动

App Start 4/15/2014 11:03:48 AM
App Start Complete 4/15/2014 11:03:48 AM
Bootstrap 4/15/2014 11:04:19 AM
Module 3 4/15/2014 11:06:37 AM
Module 1 4/15/2014 11:06:37 AM
Module 2 4/15/2014 11:06:37 AM
Module 1 4/15/2014 11:06:37 AM
Module 1 4/15/2014 11:06:37 AM
Module 1 4/15/2014 11:06:37 AM
Module 1 4/15/2014 11:06:37 AM
Module 1 4/15/2014 11:06:37 AM
Module 1 4/15/2014 11:06:38 AM
Module 1 4/15/2014 11:06:38 AM
Module 1 4/15/2014 11:06:38 AM

可以看出,在 bootstrap 之前和模块调用之前都存在延迟。

编辑2

我的配置是Nancy(使用源表单构建v0.22.2,因为需要使用强键而无需更改代码)使用Web窗体的ASP.NET 4.5。使用Visual Studio 2013作为IDE

最佳答案

我想我找到了问题所在。问题出在南希使用的TinyIoC容器的自动注册功能上。

基本上在启动(第一次请求)时,它会扫描AppDomain的每个程序集以注册依赖项。这个过程很慢:https://github.com/NancyFx/Nancy/issues/643

解决方案是按此处指示手动注册依赖项:https://github.com/NancyFx/Nancy/wiki/Bootstrapping-nancy

基本上,您只需要在AspNet项目中创建一个从DefaultNancyAspNetBootstrapper继承的类,并重写ConfigureApplicationContainer方法:

public class Bootstrapper : DefaultNancyAspNetBootstrapper
{
    protected override void ConfigureApplicationContainer(TinyIoCContainer container)
    {
        // Register our app dependency as a normal singleton

    }
}

希望这可以帮助,

关于c# - 南希开始接受请求的速度很慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23077873/

10-15 03:08