Zac*_*lan 45 .net c# windows-services timeout
我有一个自定义编写的Windows服务,我在许多Hyper-V VM上运行.作为正在运行的一些自动化测试的一部分,VM每小时重启几次.该服务设置为自动启动,几乎所有时间,它启动正常.
但是,也许有5%的时间,没有我能辨别的模式,服务无法启动.当它失败时,我在事件查看器中收到错误说
等待我的服务名称服务连接时达到超时(30000毫秒).
发生这种情况时,我可以手动启动服务,或者重新启动,服务将正常启动.
我无法弄清楚的是,我的代码中似乎没有发生30秒的超时.我的服务类的OnStart()方法的第一行将"Starting ..."记录到其log4net日志中.当服务无法启动时,我甚至都没有记录任何内容,这表明log4net无论出于何种原因都无法登录,或者在我的OnStart()被调用之前发生了超时.
该服务运行在各种操作系统上,从XP一直到Win7和2008R2,我知道将服务设置为延迟启动可以解决这个问题,对于Vista及更高版本,但这似乎是一个黑客.
我无法对此进行远程调试,因为它间歇性地发生并且在系统启动期间,我不知道如何进一步尝试弄清楚发生了什么.有任何想法吗?
我的猜测 - 就是它的全部 - 是磁盘在启动过程中发生剧烈颠簸,直到.NET框架本身没有在Windows分配服务启动的30秒内启动.
一个kludgy解决方法可能是将服务设置为手动启动,然后在非托管代码(例如C++,Delphi)中编写一个非常小的存根服务来启动服务.
另一种方法可能是从另一台机器远程启动服务.该sc命令应该很好地完成工作.
当我尝试使用 powershell 安装服务时,我在事件查看器中看到此错误。
我遇到的问题是,我的 powershell 脚本中的“服务名称”和“服务显示名称”的值与我在控制台应用程序的 program.cs 文件中指定的值不同。
| 归档时间: |
|
| 查看次数: |
57909 次 |
| 最近记录: |