关于asp.net mvc:第一个Web API会话请求非常慢

First Web API session request is very slow

我正在编写一个在IIS7上托管的ASP.NET Web API应用程序(无特殊配置)。

我的问题是,对于每个第一个请求(在新机器/新浏览器上/一段时间后...),都会有很长的延迟-即使在返回常量的请求上也是如此!

我已经读过有关"热身"脚本的信息,但这不是这里的问题。似乎Web服务器正在尝试创建会话,这需要很长时间。有什么建议吗?

编辑

我认为延迟是由每个新会话的工作进程创建引起的。现在的问题是为什么它这么慢,为什么Web服务器不重用活动的工作进程来处理请求?

我已将应用程序池配置为将工作进程限制为5个,且没有超时(设置为0)。这导致前五个会话在遇到第一个请求时很慢(我可以接受),而现在工作进程仍处于活动状态。但令人惊讶的是,请求有时又很慢!


如果使用Windows Server 2008 R2,则可以在应用程序池上configure the Auto-Start feature。同样,在应用程序池的属性中,应禁用定期回收它。请记住,尽管这将限制速度,但IIS仍可以回收应用程序池。使用自动启动功能,它将自动再次加载到内存中,但是Application_Start中的代码将在下一个请求时执行。因此您仍然可以观察到一些缓慢。


另一个原因可能是https。我们的网站可以在不使用https的情况下运行。第一页的延迟(5到15秒)仅在使用https时出现。这篇文章解释了https和修复程序的问题:

MCS团队发布的

https