[英]Windows service stops automatically
我制作了一个 Window 服务并让它在本地系统帐户下自动运行,当服务启动时它会为我触发此消息然后停止
本地计算机上的 [服务名称] 服务启动然后停止。 如果某些服务未被其他服务或程序使用,它们会自动停止。
问题是什么,解决方案是什么?
您没有在 OnStart 方法上启动任何线程来完成工作,或者在您的 OnStart 方法中引发了异常。
如果抛出异常,它将出现在 Windows 事件日志中。 在任何情况下,Windows 事件日志都是一个很好的起点。
通常 OnStart 方法如下所示:
Thread _thread;
protected override void OnStart(string[] args)
{
// Comment in to debug
// Debugger.Break()
// Do initial setup and initialization
Setup();
// Kick off a thread to do work
_thread = new Thread(new MyClass().MyMethod)
_thread.Start();
// Exit this method to indicate the service has started
}
这个特定的错误消息意味着它所说的 - 您的服务已经启动但很快由于某种原因退出了。 好消息是您的服务实际上正在做某事,因此您已配置可执行文件并作为服务正确运行。
一旦开始,由于某种原因它正在退出。 你需要找出这是为什么。 添加一些调试以告诉您它已启动并正在运行以及已知的退出情况。 如果那没有揭示问题,那么添加一些调试,让您知道它仍在运行,并从停止时开始倒退。
我遇到了类似的问题,因为我的事件日志已满并且服务无法写入它们。 因此,不可能通过在事件查看器中查找消息来进行调试。 我放了一个 try/catch 并将异常转储到一个文件中。 我不得不更改我日志上的设置以根据需要而不是每 7 天填充一次,这允许服务启动。
当然,对我来说,问题的根源是我有一个 nVidia 驱动程序问题,它充斥着我的事件日志,现在我可能在磁盘上跳动,但这是另一个问题。
您是否正在追踪任何调试信息? 很可能在初始化期间抛出异常。 我会追踪所有异常并使用 Debugview 来查看它们。
我在启动 JBoss 时遇到了同样的问题,然后我更改了JAVA_HOME
变量,它对我有用。 是JBoss版本不支持1.6,支持1.5。
也许您需要以Local System Account身份运行该服务。 请参阅Srinivas Ganaparthi 的这篇文章。
我有类似的问题,结果在我的情况下,程序只是在 OnStart 方法中崩溃了。 它试图读取一些它找不到的文件,但我想任何其他程序崩溃都会产生相同的结果。 如果是 Windows 窗体应用程序,您会收到一些错误消息,但这里只是“您的服务已启动和停止”
如果你像我一样需要从 Windows Service.exe 所在的目录中读取一些文件,请查看此主题: Getting full path for Windows Service
在我的例子中,我的服务中的一个方法被递归调用(因为没有终止条件为真)并且在特定时间后我的服务被停止。
对我来说,同样的问题是因为我的app.config
文件中的设置错误。 我更改了设置,问题解决了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.