Windows启动时.net服务启动超时

时间:2012-05-31 15:41:01

标签: .net windows-services windows-7-x64

我有一个.net服务,在Windows启动时启动,有时(完全随机)服务无法启动。

事件查看器显示: A timeout was reached (30000 milliseconds) while waiting for the MYSERVICE service to connect.

即使在我手动启动服务(Windows登录后)服务无法启动的计算机上,它也可以正常运行。

我的启动方法非常基础,它只是用实际启动逻辑启动一个新线程(通常非常快)。

我的服务需要.net 3.5 sp1,遇到这些问题的机器是win7 x64。 我怀疑它与.net框架有关,但我不知道如何。 这发生在客户端计算机上,并且安装了.net 4客户端配置文件。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

我遇到过像这样的问题。通常是由于启动时的机器负载。例如,由于许多其他服务也启动,我在SQL Server上出现此错误。

解决此问题的一种简单方法是将服务设置为以延迟模式启动,因为这样您的服务将在较少的CPU和HD负载下启动。

答案 1 :(得分:1)

如果它依赖于另一个服务,则设置依赖项。

答案 2 :(得分:0)

我们在Windows 10上遇到了类似的问题,其中大多数基于.Net的服务在启动时会失败,但可以稍后手动启动就好了。出于某种原因,使用.NET编写的服务需要更长时间才能在Windows 10中启动,但此修复程序适用于任何版本的Windows,包括Windows 7.默认情况下,如果服务启动时间超过30秒而没有响应,则服务由Windows终止。

我能够在注册表中将该行为更改为60秒。转到:

HKLM \系统\ CurrentControlSet \控制\

如果它还不存在,请创建一个名为" ServicesPipeTimeout"(减去引号)的DWORD(32位)密钥。将其值设置为60000(十进制)。这与60秒(以毫秒为单位)相关。

我甚至创建了一个自动执行此命令的注册表文件:

  

Windows注册表编辑器版本5.00

     

[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制]   " ServicesPipeTimeout" = DWORD:0000ea60

只需粘贴到记事本中并另存为.reg文件。

延迟启动,但启动后服务响应时间增加。这解决了我们在多台机器上的问题。不幸的是,我仍然不知道为什么.NET服务需要很长时间才能终止它们。但是,我觉得这是微软的错误,并不一定是我们用户做错了什么......

答案 3 :(得分:0)

对于在此问题上苦苦挣扎的任何人,我们在某些速度较慢的Windows 10计算机上都遇到了同样的问题。我们可以通过在配置文件中将generatePublisherEvidence设置为false来解决此问题。

您可以在此处详细了解此内容-> https://blogs.msdn.microsoft.com/winsdk/2010/01/29/you-may-get-a-service-timeout-from-a-signed-net-managed-service-application-while-the-system-is-doing-a-revocation-check-of-the-certificate-over-the-internet/

相关问题