2014-02-20 192 views
0

我在启动Windows服务时遇到问题。它被配置为自动启动,并且通常会启动。在有时没有,特别是在Windows 8Winsows服务未能启动

窗户日志包含以下错误:

The XYZ service failed to start due to the following error: The service did not respond to the start or control request in a timely fashion. A timeout was reached (30000 milliseconds) while waiting for the XYZ service to connect.

这是一个.NET 2.0的服务。

问题的标准原因是执行长同步操作的OnStart方法。这次这不是问题。事实上,我在OnStart方法的开头放置了一个文件记录器,看起来它根本没有被调用。

回答

1

原来,这个问题是由导致两个问题:

  • 可执行文件(exe文件)进行了数字签名;
  • 有互联网连接问题,并且IP花了很长时间;

由于证书验证时间过长,两者合并导致服务启动进程超时。

0

我不得不使用这个对本机C的Win32服务,并搜查如果.NET有类似的东西。对不起,如果我错了。

在你的OnStart,使用RequestAdditionalTime方法来通知服务控制管理器,该操作将需要更多的时间来完成。文档here

+0

是的,这将在大多数情况下工作。但在我的情况下,实际的OnStart()方法甚至没有被调用。证书的验证由OS执行(但包含在服务超时中)。似乎像一个操作系统的bug :) –

+0

@ andrew.fox,对不起,我现在看到你以前的答案。也许这是不是在你的系统允许的,但[本MS Technet文章(http://technet.microsoft.com/en-us/library/cc756342%28WS.10%29.aspx)可以提供帮助。 –