【问题标题】:Windows service start order causes faulted state in WCF ServiceWindows 服务启动顺序导致 WCF 服务出现错误状态
【发布时间】:2010-12-27 03:44:23
【问题描述】:

我有一个作为 Windows 服务托管的 WCF 服务。 WCF 服务在同一台服务器上使用 msmq 队列。

当服务器重新启动时,我的 WCF 服务在 msmq 服务之前启动。这会使我的 WCF 服务处于故障状态。

处理此问题的最佳方法是什么?我应该设置对 msmq 服务的依赖关系吗?有没有办法从 wcf 服务处理这个问题?

【问题讨论】:

    标签: c# .net wcf msmq


    【解决方案1】:

    您可以使用服务依赖项指定启动顺序。即停止 WCF 服务在 MSMQ 服务之前启动。见:https://serverfault.com/questions/84181/can-the-startup-order-for-windows-services-be-configured-if-so-where

    【讨论】:

    • 我选择了这个解决方案。谢谢
    【解决方案2】:

    您可以在设计时在 NamedServiceInstaller 类中执行此操作,在 ServicesDependedOn 属性中为您想要启动的每个服务添加一个带有服务名称的字符串。

    【讨论】:

      【解决方案3】:
      ServiceInstaller serviceInstaller = new ServiceInstaller();
      
      
      // Adding this property to your ServiceInstaller forces 
      // your service to start after MSMQ.
      
      serviceInstaller.ServicesDependedOn = new string[] { "MSMQ" };
      

      【讨论】:

        【解决方案4】:

        如果您使用的是 Windows Server 2008,则将服务启动类型设置为自动(延迟启动)可能是另一种选择。这将在您的 WCF 托管服务之前启动 MSMQ 服务。
        但我认为 Shiraj 设置依赖项的答案更好。

        【讨论】:

          猜你喜欢
          • 2015-08-10
          • 2011-07-25
          • 1970-01-01
          • 2013-07-09
          • 1970-01-01
          • 2010-10-22
          • 1970-01-01
          • 1970-01-01
          • 2017-04-07
          相关资源
          最近更新 更多