服务无法启动

问题描述:

我根据本文开发了一个简单的C#服务。服务无法启动

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

我能够成功启动首次服务并停止它。在接下来的尝试中,我无法启动服务。我得到以下信息。

本地MyNewService服务 计算机启动然后停止。 某些服务在 他们没有工作要做时会自动停止,例如, 性能日志和警报 服务。

请大家帮忙。

+1

OnStart的邮政编码 – 2009-12-03 14:46:17

我概述了here我们用来调试Windows服务的方法。也许这会帮助你追踪错误。基本上这听起来像是在尝试执行OnStart方法时发生了一些错误。

+0

谢谢大家。 OnStart方法中存在一个错误! – bdhar 2009-12-10 08:50:55

你看过事件日志吗?您通常可以在那里获得有关服务错误的更详细的错误信息。另外,您是否在使用您的服务写出日志?这是另一种方法,你可以找出发生了什么问题。

您可以通过右键单击计算机并选择“管理”进入事件日志。在系统工具下,查看事件查看器 - >应用程序。这是在Windows XP上,但其他Windows操作系统应该是类似的。

基本上这意味着您的服务的主线程出于某种原因已经崩溃。我见过的最常见的是文件系统访问它自己的日志文件。

有时候您可以在事件查看器中找到原因,但不幸的是,您运行该服务的用户很多时间实际上没有访问权限来记录它的错误。如果你在一个开发环境中,做一件简单的事情就是暂时给这个服务一个管理员帐号,首先它会告诉你这个崩溃是由于缺少访问引起的(因为它会起作用),其次如果不是,它会允许它写入事件查看器。一旦你修复了它,一定要采取f的管理员权限,导致长期的,这可能是非常危险的。

+0

实际上该服务正在使用本地系统帐户权限运行。它实际上是在我第一次尝试时开始和停止的。还记录事件。但是当我尝试第二次尝试时,它并没有! – bdhar 2009-12-03 10:01:16

如果服务位于您的开发机器上,您应该能够让Visual Studio的调试器在启动时连接到它,以便您可以识别是否有任何事件导致它崩溃。它涉及一些注册表编辑,如下所述:http://blogs.msdn.com/greggm/archive/2005/02/21/377663.aspx

听起来好像您的主线程由于某种原因正在死亡。在服务的启动代码中拨打System.Diagnostics.Debugger.Break(),例如Main入口点,服务构造函数或OnStart()方法。当您从服务MMC启动服务时,系统会提示您输入调试会话。一旦进入Visual Studio,打开Exceptions对话框(从Debug菜单中)并选中Thrown列中的框。然后从那里调试以找到问题。