我对 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);
}