Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows服务启动顺序导致WCF服务处于故障状态_C#_.net_Wcf_Msmq - Fatal编程技术网

C# Windows服务启动顺序导致WCF服务处于故障状态

C# Windows服务启动顺序导致WCF服务处于故障状态,c#,.net,wcf,msmq,C#,.net,Wcf,Msmq,我有一个作为Windows服务托管的WCF服务。WCF服务在同一服务器上使用msmq队列 重新启动服务器时,我的WCF服务在msmq服务之前启动。这会使我的WCF服务处于故障状态 处理这个问题的最佳方法是什么?我应该设置对msmq服务的依赖关系吗?是否有办法从wcf服务处理此问题?您可以使用serivce依赖项指定启动顺序。即在MSMQ服务启动之前停止WCF服务。请参阅:您可以使用serivce依赖项指定启动顺序。即在MSMQ服务启动之前停止WCF服务。请参阅:您可以在设计时在NamedServ

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

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


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

您可以使用serivce依赖项指定启动顺序。即在MSMQ服务启动之前停止WCF服务。请参阅:

您可以使用serivce依赖项指定启动顺序。即在MSMQ服务启动之前停止WCF服务。请参阅:

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

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

如果您在windows server 2008上,将服务启动类型设置为自动延迟启动可能是另一个选项。这将在WCF托管服务之前启动MSMQ服务。
ServiceInstaller serviceInstaller = new ServiceInstaller();


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

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

但是我认为Shiraj对于设置依赖项的回答更好。

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

我选择了这个解决方案。谢谢,我选择了这个解决方案。非常感谢。