这个问题似乎被广泛讨论,但在我的特定案例中找到解决方案时我遇到了问题。
我的服务设置为在Local System
帐户下运行。在我的第一台安装了Windows 7 SP1(64 位)的机器上,一切正常。但是,就在我尝试使用Windows Server 2008 R2 SP1 (64-bit)在我的第二台机器上启动服务之后,甚至没有第二次通过,我正面临这个恼人的错误:
Windows could not start the ProService service on Local Computer
Error 1053: The service did not respond to the start or control request in a timely fashion
显示System Log
2个条目:
The ProService 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 ProService service to connect.
实现如下所示:
程序.cs:
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
ServiceBase.Run(new ServiceBase[] { new ProService() });
}
static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
if (e != null && e.ExceptionObject != null)
{
Logger.Record(e.ExceptionObject);
}
}
ProService.cs:
public ProService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
RequestAdditionalTime(10000);
FireStarter.Instance.Execute();
}
catch (Exception e)
{
Logger.Record(e);
throw;
}
}
该OnStart
方法只是启动一个新线程,因此执行几乎不需要任何时间。我使用RequestAdditionalTime
声明以防万一-拒绝将此事作为我的问题的根源。此外,如您所见,我正在处理所有异常,但在启动期间没有异常写入我的自定义服务事件日志(顺便说一句:日志记录正在第一台 win7 机器上工作)。如何调查发生了什么?