Windows服务启动顺序导致WCF服务中的故障状态

时间:2009-12-16 08:27:25

标签: c# .net wcf msmq

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

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

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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

ServiceInstaller serviceInstaller = new ServiceInstaller();


// Adding this property to your ServiceInstaller forces 
// your service to start after MSMQ.

serviceInstaller.ServicesDependedOn = new string[] { "MSMQ" };

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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