启动Windows服务失败,错误1053

Mat*_*att 12 windows-services windows-server-2003 .net-2.0

我有一个无法启动的Windows服务,给出错误"错误1053:服务没有及时响应启动或控制请求".

在我的调试器中运行服务工作正常,如果我双击远程计算机上的服务.exe弹出控制台窗口并继续运行没有问题 - 我甚至可以看到日志消息显示程序正在处理所有内容应该是这样的.

该服务以前运行良好,虽然这是我个人第一次尝试使用该程序的最新更改来部署它.我已经评估了这些变化,并且无法弄清楚它们可能会如何导致这个问题,特别是因为一切都运行良好,而不是作为服务启动.

服务impelmentation的StartRoutine()方法是空的,因此应该以"及时的方式"返回.

我已经检查了计算机上的事件日志,除了在30秒的必要时间内没有从服务中收到回复之外,它没有提供任何其他信息.

既然它可以在我的机器上运行,并且作为一个双击的可执行文件,我将如何找出它作为服务失败的原因?

哦,它是.NET 2.0,所以它不应该受到出现这种症状的1.1框架bug的影响(http://support.microsoft.com/kb/839174)

该框是运行SP2的Windows Server 2003 R2计算机.

ker*_*vin 5

这是一个误导性的错误.这可能是一个未处理的例外.

清空你的OnStart()处理程序,然后在你的构造函数中尝试这个...

    public MainService()
    {
        InitializeComponent();

        try
        {
            // All your initialization code goes here.

            // For instance, my exception was caused by the lack of registry permissions
            ;
        }
        catch (Exception ex)
        {
            EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在检查系统上的EventLog是否存在应用程序错误.


Sco*_*aad 4

可能有很多原因,它可能有助于在出现问题的机器上获取堆栈跟踪。有很多方法可以做到这一点,但重点是您必须查看代码中哪里失败了。

您可以通过远程调试来完成此操作,但一个简单的事情可能是仅记录到事件记录器或文件日志(如果有的话)。从字面上看,将“WriteLine(”At class::function()”) 放在代码的各个部分中,看看是否已成功实现。

这至少会让你朝着正确的方向寻找(最终是代码)。

更新

请参阅 Microsoft 的如何调试 Windows 服务有关使用 WinDbg 排除启动问题的详细信息,

这个相关问题详细介绍了调试用 .NET 编写的服务的好方法。