【问题标题】:Restart a WCF service after a server reboot服务器重新启动后重新启动 WCF 服务
【发布时间】:2011-04-21 06:13:27
【问题描述】:

WCF 中是否有一些机制可用于“预启动/预热” IIS 中托管的 WCF 服务? - 类似于 SharePoint 网站的预热脚本

我遇到这样的情况,服务器在夜间重新启动,第二天 WCF 服务启动时有很长的延迟。我无法更改使用服务的各种应用程序的超时时间,所以第一批用户在早上使用他们的应用程序时会报告错误

这是在 Windows 2003 Server 和 IIS 6.0 上,所以 IIS 应用程序池预热模块,http://www.iis.net/download/applicationwarmup,因为它适用于 IIS 7.5

注意:该模块似乎已被暂时撤回,详情请参阅 ...IIS Forum

【问题讨论】:

标签: wcf iis-6 windows-server-2003 startup restart


【解决方案1】:

WCF 服务应在启动时立即准备就绪。只需确保将服务设置为在服务器启动时自动启动即可。

【讨论】:

  • 抱歉,没有说清楚......这些是托管在 IIS 中的 WCF 服务,而不是在 Window 服务中。
  • 我从未在 IIS 中托管过,总是为它们使用 Windows 服务。他们需要热身听起来很奇怪?!你能写一个预定的事件来让它在系统重启时预热吗?
  • 这样想……看起来很老套,但我想这就是 IIS 7.5 模块的用途……只是希望我们有 7.5
【解决方案2】:

我知道你不会喜欢这个答案,我想我再重复一遍,因为这不是我第一次发布它。在 IIS 7.5 之前的版本中预热任何东西的方法是使用预定的控制台应用程序来 ping 您的网站/服务并预热它们。这是一个丑陋的解决方案,但它很有效,很简单,我在每个必须处理这个要求的项目中都看到了它。

【讨论】:

  • 嗯,在他们升级到 IIS 7.5 之前...感谢您的帮助,计划任务已安装并正常工作
【解决方案3】:

您可以使用 Windows Server AppFabric,它具有 Auto Stat 功能以保持服务始终开启。但您需要在 IIS 7.5 上才能安装 App Fabric。

【讨论】:

  • 感谢您的指点...现在似乎是 IIS 7.5 的唯一自动启动选项,因为 IIS 模块已暂时撤回,请参阅IIS Forum