Windows services 启动windows服务失败,错误为1053

Windows services 启动windows服务失败,错误为1053,windows-services,.net-2.0,windows-server-2003,Windows Services,.net 2.0,Windows Server 2003,我有一个windows服务无法启动,出现错误“error 1053:该服务未及时响应启动或控制请求” 在我的调试器中运行该服务工作正常,如果我双击远程机器上的service.exe,控制台窗口会弹出并继续运行,不会出现问题-我甚至可以看到日志消息,显示程序正在以应有的方式处理一切 这项服务以前运行得很好,尽管这是我个人第一次尝试使用对程序所做的最新更改来部署它。我已经评估了这些更改,但无法找出它们可能导致此问题的原因,特别是因为当不是作为服务启动时,一切都正常运行 服务推进的StartRouti

我有一个windows服务无法启动,出现错误“error 1053:该服务未及时响应启动或控制请求”

在我的调试器中运行该服务工作正常,如果我双击远程机器上的service.exe,控制台窗口会弹出并继续运行,不会出现问题-我甚至可以看到日志消息,显示程序正在以应有的方式处理一切

这项服务以前运行得很好,尽管这是我个人第一次尝试使用对程序所做的最新更改来部署它。我已经评估了这些更改,但无法找出它们可能导致此问题的原因,特别是因为当不是作为服务启动时,一切都正常运行

服务推进的StartRoutine()方法为空,因此应该“及时”返回

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

既然它在我的机器上工作,并且是一个双击的可执行文件,那么我该如何去弄清楚它作为服务失败的原因呢

哦,它是.NET2.0,所以它不应该受到表现出这种症状的1.1框架错误的影响()


该框是一台运行SP2的windows server 2003 R2计算机。

可能有很多问题,它可能有助于在出现问题的计算机上获取堆栈跟踪。有很多方法可以做到这一点,但关键是你必须看到这在代码中失败的地方

您可以使用,但一件简单的事情可能是只记录到事件记录器,或者记录到文件日志(如果有)。从字面上看,在代码的各个部分都放上“WriteLine”(“At class::function()”),看看您是否做到了这一点

这至少会让您朝着正确的方向看(最终就是代码)

更新

有关使用WinDbg解决启动问题的详细信息,请参阅Microsoft的文章


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

我同意Scott的观点,找出发生了什么事情的最简单方法是在启动代码中添加一些跟踪(可能甚至不会出现在启动代码中)


如果这样做没有帮助,您可以将代码发布到此处,以便其他人可以查看。

可能缺少一些依赖性,请尝试以下方法:
-取消注册您的服务
-再次注册


如果寄存器失败,则表示缺少模块。

如果startrotine为空,则可能是在其他地方启动它


IIRC您需要启动一个工作线程,然后从StartRotine返回。

另一个原因是,如果您在“调试”模式下将DLL复制到安装文件夹,则会出现此问题。您需要做的是在“发布”模式下运行项目复制DLL或直接形成发布文件夹而不是调试文件夹,然后将该DLL复制到installati在文件夹上,它可以工作。您可以看到DLL大小的减小,它将不包含任何调试符号,并且类似于此

这是一个误导性错误。它可能是一个未处理的异常

清空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);
        }
    }

现在检查您系统上的事件日志以了解您的应用程序错误。

可能导致此错误的问题之一是,需要部署的windows服务是否包含一些错误,即可能是简单的授权错误或任何类似于我的情况,我引用了一些不存在的文件夹和文件进行日志记录,但是n提供了解决我问题的那些文件和文件夹的正确路径。

我浏览了关于这个特定主题的每一篇文章,没有一篇回复解决了问题,因此我添加了这个回复,以防这有助于其他人。无可否认,这只适用于新服务,而不是这个特定的情况


我正在编写一个文件侦听服务。作为一个控制台应用程序,它工作得非常好。当我将其作为一个服务运行时,我遇到了与上面相同的错误。我不知道的是(许多关于服务的MSDN文章都省略了),您需要从ServiceBase.Run(YourClassName())中执行您的类;否则,你的应用程序会执行并立即终止,因为它终止了,所以即使没有发生错误或异常,你也会收到上面的错误。下面是一篇关于这方面的文章的链接。它实际上讨论了如何将你的应用程序设置为两用-控制台应用程序和服务:

我遇到了这个问题,问题的根源是配置文件。I在记事本中编辑它,记事本添加了一个特殊字符,导致服务无法正常运行,因为配置文件被破坏。我在记事本++中看到了这个特殊字符,删除它后,服务开始像以前一样成功运行。

在我的情况下,我正在安装的服务器上没有安装正确的.NET framework上的Windows服务。

看起来代码是通过挂接ServiceBase.appeased事件执行的,该事件挂接在构造函数中(它以前也是这样做的,当它工作时)尝试在仅安装了.NET 2.0的服务器上启动.NET 4.0编译服务时出现此错误以典型的Microsoft方式,链接的文档页已完全更改…没有提及WinDbg或任何其他在实际调试器中运行服务的有用方法。是否真的希望我们只使用
WriteLine
c到处都是??如果你的日志文件在服务中无法正常工作,但在控制台应用程序中一切正常,那该怎么办?这个问题似乎没有很好的解决方案,这让我想在Redmond上扔一颗核弹:@