我有一個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