0

我们在 IIS 6 中托管 WCF 服务。ServiceHostFactory 在出现对服务的第一个请求时创建 ServiceHost。在 ServiceHost 的 OnOpening() 方法中,我们将一些数据加载到实现为静态属性的缓存中。

由于加载数据大约需要 1 分钟,我们不希望“当天的第一个用户”等待缓存被填充。问题是 ServiceHost 和缓存会随着 ApplicationPool 的每次回收而被杀死。是否有可能检测到回收并重新填充缓存?还是有其他最佳实践?我不敢相信我们是唯一有这个问题的人......

提前致谢!

4

2 回答 2

0

如果可以更新到 IIS7,则有内置的预热 api。 IIS:Web 应用程序预热

于 2010-09-01T18:48:59.913 回答
0

为了在 IIS 6.0 中托管具有较长启动时间的 Web 应用程序或服务,我总是使用简单的控制台应用程序来 ping Web 应用程序。此应用程序由 Windows 调度程序每隔几分钟运行一次。这不是很好的解决方案,但它是我发现的最简单的解决方案。如果您确定 AppPool 回收时间,您可以安排此类应用程序在回收后几分钟运行,并将应用程序添加到启动集。

于 2010-09-01T18:30:05.010 回答