2009-04-27 950 views
12

我有一个无法启动的Windows服务,提示错误“错误1053:服务没有及时响应启动或控制请求”。启动Windows服务失败,出现错误1053

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

服务已经精细先前运行,虽然这是我第一次,个人,试图以最新的程序所做的更改部署。我已经评估了这些变化,并且无法弄清楚它们是如何引起这个问题的,特别是因为当没有作为服务启动时,一切运行良好。

服务转换的StartRoutine()方法是空的,所以应该以“及时的方式”返回。

我已检查计算机上的事件日志,而它并没有给其他任何附加信息比没有听到从30秒要求的时间的服务恢复。

由于它的工作原理在我的机器上,并作为双击可执行文件,我怎么会去找出失败的原因作为一种服务?

哦,它是.NET 2.0,因此它不应该由表现出这种症状的1.1框架错误的影响(http://support.microsoft.com/kb/839174

这个盒子是在Windows Server 2003 R2计算机上运行SP2。

+1

尝试在仅安装.Net 2.0的服务器上启动.NET 4.0编译服务时出现此错误 – Hovland 2012-07-12 07:45:05

回答

4

可能是一些事情,它可能有助于在展示问题的机器上获取堆栈跟踪。有很多方法可以做到这一点,但重要的是,您必须查看代码中失败的位置。

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

这样至少可以让你找到正确的方向代码)

更新:。

请参阅Microsoft的How to Debug Windows Services文章使用WinDbg的故障排除启动问题的详细信息

related question细节很好的办法是写在.NET调试服务

1

我同意Scott的看法,最简单的方法就是在启动代码中添加一些痕迹(可能甚至不会出现在您的启动代码中)。

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

1

或许缺少一些依赖,试试这个:
- 注销服务
- 再次注册

如果在寄存器手段缺乏一个模块失败。

1

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

IIRC你需要火了一个工作线程,然后从StartRoutine返回。其他

+0

看起来代码是通过挂钩构造函数中挂接的ServiceBase.Elapsed事件执行的(它是之前也是这样做,当它工作时) – Matt 2009-04-27 15:11:37

-2

一个原因是如果复制DLL在“调试”模式下的安装文件夹这个问题将come.What你需要做的就是运行在“释放”模式的项目中复制DLL或直接形成Release文件夹,而不是调试文件夹,并将该DLL复制到安装文件夹,它将工作。您可以看到DLL的大小减小,它不会包含任何调试符号,并且像那样

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

现在检查的事件日志系统为您的应用程序错误。

1

一个可能导致这个错误的问题是,如果其需要部署Windows服务是由一些错误的,即作为我来说,我已经提到了记录一些文件夹和文件也可以是简单的授权错误,或任何其不存在,但是当提供这些文件和文件夹的正确路径时,它解决了我的问题。

0

我通过关于这个问题每一个岗位跑,没有响应的解决了这个问题,所以我加入的情况下,该响应这可以帮助别人。诚然,这只适用于新的服务,而不是这个特定的情况。

我正在写一个文件侦听服务。作为一个控制台应用程序,它完美运行。当我将它作为服务运行时,我得到了与上面相同的错误。我不知道的(以及许多有关服务的MSDN文章很容易就忽略掉了)是您需要从ServiceBase.Run(YourClassName());中执行您的类。否则,您的应用程序会执行并立即终止,因为它会终止,即使没有发生错误或异常,您也会收到上述错误。这里是一篇关于这个文章的链接。它实际上讨论设置应用双重用途 - 控制台应用程序和服务:Create a combo command line/Windows service app

0

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

0

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

相关问题