我有一个自定义的 Windows 服务,我在许多 Hyper-V 虚拟机上运行。作为一些自动化测试的一部分,虚拟机每小时重启几次。服务设置为自动启动,几乎所有时间都可以正常启动。
然而,大约5%的时间,没有我能够分辨出的模式,该服务无法启动。当它失败时,事件查看器中会出现一个错误提示:
“在等待 My Service Name 服务连接时达到超时(30000 毫秒)。”
当这种情况发生时,我可以手动启动服务或重新启动,服务将正常启动。
我无法弄清楚的是,在我的代码中似乎没有出现30秒超时。服务类的 OnStart() 方法的第一行记录“Starting…”到其 log4net 日志中。当服务无法启动时,我根本没有任何日志记录,这表明 log4net 无法记录日志,或者超时发生在我的 OnStart() 调用之前。
该服务在各种操作系统上运行,从 XP 到 Win7 和 2008R2,我知道将服务设置为延迟启动可能会解决 Vista 和更高版本的问题,但那似乎是一个 hack。
由于它如此间歇性地发生并且在系统启动期间发生,我无法进行远程调试,我对进一步尝试找出原因感到困惑。有什么想法吗?
然而,大约5%的时间,没有我能够分辨出的模式,该服务无法启动。当它失败时,事件查看器中会出现一个错误提示:
“在等待 My Service Name 服务连接时达到超时(30000 毫秒)。”
当这种情况发生时,我可以手动启动服务或重新启动,服务将正常启动。
我无法弄清楚的是,在我的代码中似乎没有出现30秒超时。服务类的 OnStart() 方法的第一行记录“Starting…”到其 log4net 日志中。当服务无法启动时,我根本没有任何日志记录,这表明 log4net 无法记录日志,或者超时发生在我的 OnStart() 调用之前。
该服务在各种操作系统上运行,从 XP 到 Win7 和 2008R2,我知道将服务设置为延迟启动可能会解决 Vista 和更高版本的问题,但那似乎是一个 hack。
由于它如此间歇性地发生并且在系统启动期间发生,我无法进行远程调试,我对进一步尝试找出原因感到困惑。有什么想法吗?