2009-12-03 151 views
0

我根據本文開發了一個簡單的C#服務。服務無法啓動

http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

我能夠成功啓動首次服務並停止它。在接下來的嘗試中,我無法啓動服務。我得到以下信息。

本地MyNewService服務 計算機啓動然後停止。 某些服務在 他們沒有工作要做時會自動停止,例如, 性能日誌和警報 服務。

請大家幫忙。

+1

OnStart的郵政編碼 – 2009-12-03 14:46:17

回答

1

我概述了here我們用來調試Windows服務的方法。也許這會幫助你追蹤錯誤。基本上這聽起來像是在嘗試執行OnStart方法時發生了一些錯誤。

+0

謝謝大家。 OnStart方法中存在一個錯誤! – bdhar 2009-12-10 08:50:55

0

你看過事件日誌嗎?您通常可以在那裏獲得有關服務錯誤的更詳細的錯誤信息。另外,您是否在使用您的服務寫出日誌?這是另一種方法,你可以找出發生了什麼問題。

您可以通過右鍵單擊計算機並選擇「管理」進入事件日誌。在系統工具下,查看事件查看器 - >應用程序。這是在Windows XP上,但其他Windows操作系統應該是類似的。

1

基本上這意味着您的服務的主線程出於某種原因已經崩潰。我見過的最常見的是文件系統訪問它自己的日誌文件。

有時候您可以在事件查看器中找到原因,但不幸的是,您運行該服務的用戶很多時間實際上沒有訪問權限來記錄它的錯誤。如果你在一個開發環境中,做一件簡單的事情就是暫時給這個服務一個管理員帳號,首先它會告訴你這個崩潰是由於缺少訪問引起的(因爲它會起作用),其次如果不是,它會允許它寫入事件查看器。一旦你修復了它,一定要採取f的管理員權限,導致長期的,這可能是非常危險的。

+0

實際上該服務正在使用本地系統帳戶權限運行。它實際上是在我第一次嘗試時開始和停止的。還記錄事件。但是當我嘗試第二次嘗試時,它並沒有! – bdhar 2009-12-03 10:01:16

0

聽起來好像您的主線程由於某種原因正在死亡。在服務的啓動代碼中撥打System.Diagnostics.Debugger.Break(),例如Main入口點,服務構造函數或OnStart()方法。當您從服務MMC啓動服務時,系統會提示您輸入調試會話。一旦進入Visual Studio,打開Exceptions對話框(從Debug菜單中)並選中Thrown列中的框。然後從那裏調試以找到問題。