我有一个WCF服务作为Windows服务托管。 WCF服务在同一台服务器上使用msmq队列。Windows服务启动顺序导致WCF服务中出现故障状态
当服务器重新启动时,我的WCF服务在msmq服务之前启动。这使我的WCF服务处于故障状态。
处理这个问题的最佳方法是什么?我应该建立一个依赖于msmq服务?有没有办法从wcf服务处理这个问题?
我有一个WCF服务作为Windows服务托管。 WCF服务在同一台服务器上使用msmq队列。Windows服务启动顺序导致WCF服务中出现故障状态
当服务器重新启动时,我的WCF服务在msmq服务之前启动。这使我的WCF服务处于故障状态。
处理这个问题的最佳方法是什么?我应该建立一个依赖于msmq服务?有没有办法从wcf服务处理这个问题?
您可以使用serivce依赖关系指定启动顺序。这是停止在MSMQ服务之前启动WCF服务。请参阅:https://serverfault.com/questions/84181/can-the-startup-order-for-windows-services-be-configured-if-so-where
您可以在设计时在NamedServiceInstaller类中执行此操作,为您希望在之前启动的每个服务在ServicesDependedOn属性中添加一个带有服务名称的字符串。
ServiceInstaller serviceInstaller = new ServiceInstaller();
// Adding this property to your ServiceInstaller forces
// your service to start after MSMQ.
serviceInstaller.ServicesDependedOn = new string[] { "MSMQ" };
如果您在windows server 2008上将服务启动类型设置为自动(延迟启动)可能是另一种选择。这将在您的WCF托管服务之前启动MSMQ服务。
但我认为Shiraj设置依赖关系的答案更好。
我去了这个解决方案。谢谢 – Kristoffer 2009-12-16 12:15:14