2012-07-11 228 views
5

我正在開發一款應用程序來安裝&作爲Windows服務運行。它仍然是越野車和意外停止(留下任何Windows事件記錄之一),當我試圖再次啓動它,我得到了錯誤Windows無法啓動服務

Windows無法啓動本地計算機上的服務{服務的名稱}。 錯誤1067:進程意外終止。

我重新啓動計算機(服務器2008 R2;虛擬機,萬一有所作爲),沒有幫助。卸載並重新安裝我的服務,仍然會出現該錯誤!

東西在機器上需要清除/刷新,以便它會嘗試再次啓動服務。我不想重建整個虛擬機,但我沒有想法。

UPDATE

我忘了提,這個Windows服務 - 完全相同的代碼&安裝 - 是其他3臺機器運行上述錯誤。在OnStart()中加入這個調試器聽起來仍然是一種很好的方式。

+2

通常這是由於未處理的異常。 – 2012-07-11 20:29:59

+2

這意味着您的代碼中存在一些錯誤。檢查事件日誌,看看它給你什麼信息。還嘗試添加日誌記錄機制,以便您知道錯在哪裏 – Shyju 2012-07-11 20:30:20

+0

您的服務訪問網絡驅動器嗎? – roymustang86 2012-07-11 20:30:50

回答

9

如果你有機會獲得代碼,你可以在OnStart方法的第一行添加一個方法Debugger.Break

一旦你「打破」進入應用程序調查拋出異常的位置。

+0

整潔。不知道那個。 – NotMe 2012-07-11 21:05:29

+0

我把Debugger.Break()放在OnStart()的第一行,但它沒有被打中:( – Hari 2014-01-02 12:33:15

+0

@Hari你可以仔細檢查你的應用程序是否使用Debug配置編譯(而不是Release)? – oleksii 2014-01-02 21:43:34

1

您可以將調試器附加到正在運行的服務。詳情請見Debug Windows Service Applications

很幸運,您可以輕鬆地複製問題。您可以使用代碼安裝.NET Studio來調試您的問題。

另一種技術是使服務成爲一個普通的應用程序。您知道可疑代碼是在啓動過程中。因此,只需使用Startup函數中的代碼創建應用程序,然後從那裏開始調試。

祝你好運,

湯米Kwee