IIS 7.5应用程序初始化ASP.NET Web服务(预热)而不重新映射请求

时间:2013-03-11 21:06:10

标签: asp.net iis iis-7.5 splash warm-up

我正在尝试使用IIS 7.5 Application Initialization扩展来为我的Web应用程序配置预热过程。这是我采取的一种方法,旨在最大限度地减少应用程序池回收造成的缓慢下降,这是一个问题explained well in other questions on Stack Overflow

我想要的是,是为了获得应用初始化的好处,无需重新映射请求

到目前为止我做了什么

我关注IIS 8 instructions基本用例,效果很好!我创建了一个名为app_starting.htm的启动页面,通过使用此代码,它会在应用初始化时显示:

<applicationInitialization remapManagedRequestsTo="app_starting.htm" skipManagedModules="true" >
    <add initializationPage="/" />
</applicationInitialization>

为什么这不好

我想使用初始化来加速对使用ASP.NET MVC编写的基于REST的Web服务的请求。此Web服务是多个应用程序的后端。当他们向资源(即/client/1/addresses)发出请求时,他们无法处理接收启动页面。

我尝试了什么

我删除了remapManagedRequestsTo属性。但是,现在当我在初始化期间请求资源时,我得到500错误,直到初始化完成。之后,回复恢复正常。依赖此服务的应用程序也不会很好地响应500错误,因为初始化不应该是错误条件。

我需要什么

如果不执行任何重新映射,我希望请求行为恢复正常。即使正在进行初始化,对应用程序的其他请求也应排队并等待,直到初始化完成后。

我有什么遗失的吗?我可以做到这一点吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:26)

我想我回答了自己的问题。我删除了skipManagedModules属性,但它确实有效。此代码完成应用程序初始化,在预热期间,请求似乎等待它在处理之前完成:

<applicationInitialization>
    <add initializationPage="/" />
</applicationInitialization>

我找不到任何有关其行为方式的文档,并且不太了解skipManagedModules的含义。如果有人可以进一步解释这一点,我可以将解释标记为答案。谢谢!