如何在回收ApplicationPool后“预热”(填充缓存等)IIS中托管的WCF服务?

时间:2010-09-01 14:27:27

标签: wcf pool

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

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

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果您可以更新到IIS7,则有一个内置的预热api。 IIS: web applications warmup