【问题标题】:Why does my c# Windows service stop running without any messages being written to the application event log?为什么我的 c# Windows 服务停止运行而没有任何消息写入应用程序事件日志?
【发布时间】:2012-05-21 12:32:43
【问题描述】:

我对 Windows 服务相当陌生。我为我的 c# Windows 服务创建了一个安装程序,并且服务器(Windows Server 2003)上的安装似乎已经工作。当它启动时,它会将Service started successfully 写入日志。当它停止时,它会写入Service stopped successfully。但是,有时服务停止运行而没有向日志中写入任何内容,因此我手动启动它。当我之后查看日志时,它按预期显示Service started successfully。奇怪的是,在日志中连续两次看到它显然缺少服务以某种方式停止运行的条目。

这可能是什么潜在原因?我将服务设置为自动并安装它以供所有用户运行。我的印象是,这意味着只要机器启动,服务就会自动启动。我怎样才能找出它停止的原因?崩溃的服务会自动写入事件日志,还是我必须以记录自己的崩溃原因的方式处理异常?

编辑:一些附加信息:

  • 我已将其设置为以本地系统帐户登录
  • 在恢复选项下,我将其设置为在第一次失败时重新启动。我没有第二次或后续失败的任何东西。

更新:回答者推荐了一个全局异常处理程序。虽然我不会将此作为永久性修复来实施,但它至少可以帮助我找出问题发生在哪里。我实际上用我安装的服务对此进行了测试,它可以工作。我发现未处理的异常实际上确实使服务崩溃,而根本没有向日志中写入任何内容。我以为它至少会报告一些应用程序错误,但事实并非如此。

static void Main()
{
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

    //other code here
}

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Utilities.WriteIt(e.ExceptionObject as Exception);
}

【问题讨论】:

  • 你检查过事件日志吗?

标签: c# .net .net-4.0 windows-services windows-server-2003


【解决方案1】:

处理异常总是最好的。至少使用全局异常处理程序并将其写入日志文件

【讨论】:

  • 我走了这条路,它似乎正在工作(用代码更新了我的问题)。顺便说一句,我确实处理异常,但我没有到处都有 try/catch 块。实现全局处理程序效果很好,可以让我找出问题发生在哪里。谢谢!
【解决方案2】:

听起来您的服务在没有进行任何形式的异常处理和/或日志记录的情况下意外失败。 Windows 服务不会自动将异常写入事件日志 - 由您来处理异常并(如果它们是致命的)将它们写在某处以便您可以诊断问题。

至少,我会在某个地方推荐一个日志文件(可能在服务可执行文件夹中,或者最好在其他容易访问且不会与权限问题发生冲突的地方)和一个标准的日志记录方法,你的所有异常处理程序调用以将消息写入。

【讨论】:

    【解决方案3】:

    如果某个服务由于某些异常而意外退出,我不确定它是否会自动出现在事件日志中。

    我强烈推荐像log4net 这样的日志记录套件,以便进行更彻底的日志记录。您将能够提供多种日志记录“级别”(调试跟踪以查看您是否到达某些代码、重要事件的信息跟踪、记录异常的错误跟踪)。

    您可以查看 here 以获取 EventLogAppender 的示例。但是,我建议先获取 FileAppender,这是最容易创建的日志之一,首先工作,然后为 Event Log 添加第二个 appender。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2013-03-24
      • 2010-10-25
      • 2022-11-04
      • 1970-01-01
      相关资源
      最近更新 更多