簡體   English   中英

為什么不調用Windows服務OnStart的原因可能是什么?

[英]What can be the reasons why windows service OnStart is not called?

我已經安裝了服務,但無法啟動它。

我收到帶有以下消息的對話框:

Windows無法在本地計算機上啟動WU分發服務服務。 錯誤1053:服務未及時響應啟動或控制請求。

還有兩個EventLog條目:第一個帶有相同的消息,第二個帶有:

等待WU分發服務服務連接時已達到超時(30000毫秒)。

我的serivce類具有默認生成的構造函數,該構造函數僅具有對InitializeComponent()調用,因此沒什么大不了的。

為了檢查OnStart運行多長時間,我插入了帶有時間戳的Debug.WriteLine ,並添加了將Debug.AutoFlush設置為true的TextWriterTraceListener
沒有創建日志文件,因此未調用OnStart。
絕對可以肯定,我只是在OnStart內拋出了異常,但仍然沒有收到有關異常的消息。

我需要知道為什么未調用OnStart的原因是什么。

您必須進行調試以查看會發生什么。 您可以添加更多打印件,我建議您消除復雜性,只寫文件流而不是調試偵聽器。

您可以將調試器附加到正在運行的進程,請參閱如何:調試Windows Service Applications ,但這要求該服務才能啟動並運行。 如果它在啟動時掛起,您仍然有很大的機會,因為您可以檢查掛起狀態並了解發生了什么。

如果您需要在一生中調試服務,則需要升級為真正的調試器。 請參閱KB824344如何調試Windows服務 ,特別是配置服務以附加WinDbg調試器開始,我通常使用gflags,它比注冊表更優雅。 您需要從自己的會話中將遠程連接到與WinDbg相連的服務,請參閱使用WinDbg進行遠程調試 。您可以在WinDbg中調試托管代碼,這並不是VS所做的豪華體驗,但真正的好處是機器正在做。

首先要測試的一件簡單的事情是,在使用服務帳戶啟動后,可執行文件的行為如何。 如果服務作為本地系統運行,則使用psexec -i -s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM