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

我试图使用IIS 7.5应用程序初始化扩展来配置我的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服务是几个应用程序的后端。当他们向资源(即/客户端/ 1 /地址)发出请求时,它们不能处理接收到启动页面。

我试过了

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

我需要的

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

有没有我失踪的东西?我可以做到吗

谢谢您的帮助!

我想我回答了我自己的问题。我删除了skipManagedModules属性,它的工作。此代码完成应用程序初始化,并且在加热期间,请求似乎等待其完成,然后再处理:

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

我找不到任何文档,为什么它这样做,并不真正了解skipManagedModule意味着什么。如果有人可以进一步解释这个问题,我可以把解释标示为答案。谢谢!

翻译自:https://stackoverflow.com/questions/15348621/iis-7-5-application-initialization-for-asp-net-web-service-warmup-without-rema

转载注明原文:IIS 7.5应用程序初始化ASP.NET Web服务(预热),而不重新映射请求