我正在尝试使用 IIS 7.5 应用程序初始化扩展来为我的 Web 应用程序配置预热过程。这是我正在采取的一种方法,以最大程度地减少由应用程序池回收引起的减速,这个问题在 Stack Overflow 上的其他问题中得到了很好的解释。
我想要的是获得应用程序初始化的好处,而无需在其他任何地方重新映射请求。
到目前为止我所做的
我按照基本用例的IIS 8 说明进行操作,效果很好!我创建了一个名为 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 错误,因为初始化不应该是错误条件。
我需要的
在不执行任何重新映射的情况下,我希望请求行为恢复正常。即使初始化正在进行中,对应用程序的其他请求也应该排队等待直到初始化完成。
有什么我想念的吗?我能做到这一点吗?
谢谢您的帮助!