我正在尝试使用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错误,因为初始化不应该是错误条件。
如果不执行任何重新映射,我希望请求行为恢复正常。即使正在进行初始化,对应用程序的其他请求也应排队并等待,直到初始化完成后。
我有什么遗失的吗?我可以做到这一点吗?
感谢您的帮助!
答案 0 :(得分:26)
我想我回答了自己的问题。我删除了skipManagedModules
属性,但它确实有效。此代码完成应用程序初始化,在预热期间,请求似乎等待它在处理之前完成:
<applicationInitialization>
<add initializationPage="/" />
</applicationInitialization>
我找不到任何有关其行为方式的文档,并且不太了解skipManagedModules
的含义。如果有人可以进一步解释这一点,我可以将解释标记为答案。谢谢!