我有一个
Windows服务无法启动,发出错误“错误1053:服务没有及时响应启动或控制请求”.
在我的调试器中运行服务工作正常,如果我双击远程机器上的服务.exe,控制台窗口弹出并继续运行没有问题 – 我甚至可以看到日志消息显示我的程序正在处理一切应该的方式
该服务以前一直运行良好,尽管这是我第一次尝试使用最近对该程序进行的更改进行部署.我已经评估了这些变化,并且无法弄明白他们如何可能导致这个问题,特别是因为一旦服务不启动,一切顺利.
服务推动的StartRoutine()方法是空的,所以应该以“及时的方式”返回.
我检查了计算机上的事件日志,它没有提供任何其他信息,除了在30秒的必要时间内没有收到服务的回复.
既然它在我的机器上工作,而且作为一个双击的可执行文件,我将如何解决为什么它作为服务失败?
哦,它是.NET 2.0,所以它不应该受到展示此症状的1.1框架错误的影响(http://support.microsoft.com/kb/839174)
该框是运行SP2的Windows Server 2003 R2机器.
可能是一些事情,它可能有助于在机器上获取堆栈跟踪问题.有很多方法可以做到这一点,但重要的是您必须看到代码中的失败.
您可以使用remote debugging,但一个简单的事情可能是只是登录到事件记录器,或文件日志,如果你有.从字面上来说,在代码的整个部分放置“WriteLine(”At class :: function()“),看看你是否在那里.
这将至少让你看正确的方向(最终是代码).
更新:
有关使用WinDbg启动问题的疑难解答的详细信息,请参阅Microsoft的How to Debug Windows Services文章.
这个related question详细介绍了调试以.NET编写的服务的好方法.