2009-06-10 80 views
1

我們有一個以.net編寫的Windows服務,它託管着WCF服務。我的問題是,是否有可能在任何故障時監控和重新啓動服務,在其他世界中,我希望我的服務能夠在出現故障時自動重新啓動。
非常感謝發生故障時重新啓動Windows服務

+0

我們可以通過Window Service中的代碼來完成嗎? – Sumeet 2009-12-16 06:22:40

+0

是@Sumeet,你可以。由於您的服務處於故障狀態,因此您應該有其他服務來執行此操作。一個偉大的類ServiceController(http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx)可以幫助你它 – 2009-12-16 06:34:48

回答

5

啓動/控制面板/服務/右鍵單擊您的服務/屬性/第一次失敗:重新啓動服務/第二次失敗:重新啓動服務/後續失敗:重新啓動服務。

應該這樣做。

2

進入操作系統的服務管理器,右鍵單擊您的服務並選擇屬性。你會發現一個恢復標籤,它可以讓你定義崩潰時的行爲。

-1

您可以編寫另一項服務,如監視此核心服務的監視器服務&將在停止時重新啓動它。但是,如果觀察器服務停止,則無法完成任何操作。

0

我認爲你應該考慮一下你的服務設計。它應該是wcf過程的主機。你可以使3個線程:

  • 主線程(僅停開V致命錯誤)

  • 的ExceptionHandler線程(句柄「預期」異常並做記錄,並採取WCFHost線程死亡的護理)

  • WCFHost線程(承載WCF服務,併爲它喜歡的ExceptionHandler現在可以照顧這個可以經常死。)

1

在單個Windows服務中,可以有多個WCF服務。 您可以處理單個WCF服務的ServiceHost類的Faulted事件並重新初始化它。