为什么我的c #Windows服务在没有任何消息写入应用程序事件日志的情况下停止运行?

osc*_*tin 7 .net c# windows-services .net-4.0 windows-server-2003

我是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);
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*elZ 6

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