我已经安装了我的服务但无法启动它。
我得到一个消息对话窗口:
Windows无法在Local上启动WU Distribution Service服务 电脑。错误1053:服务没有响应开始或 及时控制请求。
两个EventLog条目:第一个具有相同的消息,第二个具有:
等待WU时达到超时(30000毫秒) 配送服务连接。
我的serivce类有默认生成的构造函数,只有InitializeComponent()
的调用,所以没有什么重。
为了检查OnStart运行了多长时间我插入了Debug.WriteLine
次篡改,并添加了TextWriterTraceListener
并将Debug.AutoFlush
设置为true。
没有创建日志文件,因此未调用OnStart
绝对确定我只是在OnStart
内抛出异常,但仍然没有得到关于异常的消息。
我需要知道为什么OnStart
没有被调用的原因。
答案 0 :(得分:1)
您必须进行调试才能看到会发生什么。您可以添加更多打印件,我建议消除并发症,只需写入文件流而不是调试侦听器。
您可以将调试程序附加到正在运行的进程,请参阅How to: Debug Windows Service Applications,但这需要服务启动并运行。如果它在启动时挂起,你仍然有很好的机会,因为你可以检查挂起状态并了解会发生什么。
如果您需要在生命的第一时刻调试服务,那么您需要毕业于真正的调试器。请参阅KB824344 How to debug Windows services,特别是配置服务以附带WinDbg调试器开始,我通常使用gflags,比注册表更优雅。您需要从您自己的会话中将远程连接到服务附加的WinDbg,请参阅Remote Debugging Using WinDbg。您可以在WinDbg中调试托管代码,这不是VS正在做的豪华体验,但这是真正的交易关于机器在做什么。
首先要测试的一件容易的事情是,在服务帐户下启动时,您的可执行文件的行为如何。如果服务作为localsystem运行,则使用psexec -i -s。