【发布时间】:2010-12-31 11:21:37
【问题描述】:
我有一个在多个 Hyper-V 虚拟机上运行的自定义编写的 Windows 服务。作为一些正在运行的自动化测试的一部分,虚拟机每小时会重新启动几次。该服务设置为自动启动,几乎所有时间都可以正常启动。
但是,可能有 5% 的情况下,在我无法辨别模式的情况下,服务无法启动。当它失败时,我在事件查看器中收到一条错误消息
等待“我的服务名称”服务连接时超时(30000 毫秒)。
出现这种情况,我可以手动启动服务,或者重新启动,服务就可以正常启动了。
我想不通的是,我的代码中似乎没有出现 30 秒超时。我的服务类的 OnStart() 方法的第一行将“正在启动...”记录到它的 log4net 日志中。当服务无法启动时,我什至什么都没有记录,这表明 log4net 出于某种原因无法记录,或者在调用我的 OnStart() 之前发生超时。
该服务可在各种操作系统上运行,从 XP 一直到 Win7 和 2008R2,我知道将服务设置为延迟启动可能会在 Vista 及更高版本中解决此问题,但这似乎是一种 hack。
我无法远程调试它,因为它在系统启动期间间歇性地发生,而且我不知道进一步的方法来试图弄清楚发生了什么。有什么想法吗?
【问题讨论】:
-
您的服务是否依赖于任何其他服务,或者是否有任何服务依赖于您的服务才能启动?
-
不,它是完全独立的。
-
你在 log4net 中使用什么类型的 appender?
-
一个 RollingFileAppender,就像我想的一样简单。
标签: c# .net windows-services timeout