繁体   English   中英

Windows 服务自动停止

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM