gpt4 book ai didi

c# - 重启后出现"A timeout was reached while waiting for the service to connect"错误

转载 作者:IT王子 更新时间:2023-10-29 03:54:56 28 4
gpt4 key购买 nike

我有一个自定义编写的 Windows 服务,我在许多 Hyper-V 虚拟机上运行。作为正在运行的一些自动化测试的一部分,虚拟机每小时会重启几次。该服务设置为自动启动,几乎所有时间都可以正常启动。

但是,可能有 5% 的时间,由于我无法识别任何模式,服务无法启动。当它失败时,我在事件查看器中收到一条错误消息

A timeout was reached (30000 milliseconds) while waiting for the My Service Name service to connect.

遇到这种情况,我可以手动启动服务,或者重新启动,服务就可以正常启动了。

我想不通的是,我的代码中似乎没有出现 30 秒超时。我的服务类的 OnStart() 方法的第一行将“Starting...”记录到其 log4net 日志中。当服务无法启动时,我什至没有得到任何记录,这向我表明 log4net 出于某种原因无法记录,或者在我的 OnStart() 被调用之前发生超时。

该服务可在各种操作系统上运行,从 XP 一直到 Win7 和 2008R2,我知道将服务设置为延迟启动可能会解决 Vista 及更高版本的问题,但这似乎是一种 hack。

我无法远程调试它,因为它在系统启动期间断断续续地发生,而且我不知道如何通过进一步的方法来弄清楚发生了什么。有什么想法吗?

最佳答案

我的猜测 - 仅此而已 - 是磁盘在启动期间剧烈抖动,以至于 .NET Framework 本身在 Windows 分配给服务启动的 30 秒内没有启动。

一个笨拙的解决方法可能是将服务设置为手动启动,然后用非托管代码(例如 C++、Delphi)编写一个非常小的 stub 服务来启动服务。

另一种方法可能是从另一台机器远程启动服务。 sc 命令应该可以很好地完成这项工作。

关于c# - 重启后出现"A timeout was reached while waiting for the service to connect"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1986292/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com