【问题标题】:Windows could not start service on Win Server 2008 R2 SP1 (Error 1053)Windows 无法在 Win Server 2008 R2 SP1 上启动服务(错误 1053)
【发布时间】:2012-12-16 18:18:31
【问题描述】:

这个问题似乎得到了广泛的讨论,但在我的特殊情况下,我很难找到解决方案。

我的服务设置为在Local System 帐户下运行。在我的第一台安装了 Windows 7 SP1(64 位) 的机器上,一切正常。但是,就在我尝试使用 Windows Server 2008 R2 SP1(64 位) 在我的第二台机器上启动该服务之后,甚至没有通过,我正面临这个恼人的错误: p>

Windows could not start the ProService service on Local Computer
Error 1053: The service did not respond to the start or control request in a timely fashion

System Log 显示 2 个条目:

The ProService service failed to start due to the following error: 
The service did not respond to the start or control request in a timely fashion.

和:

A timeout was reached (30000 milliseconds) while waiting for the ProService service to connect.

实现如下:

Program.cs:

static void Main()
{
    AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
    ServiceBase.Run(new ServiceBase[] { new ProService() });
}

static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    if (e != null && e.ExceptionObject != null)
    {
        Logger.Record(e.ExceptionObject);
    }            
}

ProService.cs:

public ProService()
{
    InitializeComponent();
}

protected override void OnStart(string[] args)
{
    try
    {
        RequestAdditionalTime(10000);
        FireStarter.Instance.Execute();
    }
    catch (Exception e)
    {
        Logger.Record(e);
        throw;
    }            
}

OnStart 方法只是启动一个新线程,因此执行几乎不需要任何时间。我使用RequestAdditionalTime 声明以防万一——拒绝将此事作为我的问题的根源。此外,如您所见,我正在处理所有异常,但在启动期间没有异常写入我的自定义服务事件日志(顺便说一句:日志记录在第一台 win7 机器上工作)。如何调查发生了什么?

【问题讨论】:

  • FireStarter.Instance.Execute() 会发生什么?你能发布一些该方法的代码吗?
  • 再一次,如果发生错误需要不到一秒钟的时间,那么可能会发生程序集绑定异常。您可以通过启用 FusionLog 并使用 FusionLog 查看器来跟踪这一点:msdn.microsoft.com/en-us/library/e74a18c4(v=vs.100).aspx。此外,请确保在第二台计算机上安装了适当的 .NET 框架。
  • FireStarter.Instance.Execute() 包含var thread = new Thread(x => WatchThread(new ThreadStart(ExecuteInternal))); thread.Start(); 框架已安装,两台机器上相同。不幸的是,我在fuslogsw 窗口中的输出为空(我完成了此来源的所有步骤:neovolve.com/post/2010/05/28/…,然后尝试启动我的服务)。
  • 那么我能想到的唯一有用的事情(而且我自己也用过)是在该机器上使用 Intellitrace 独立收集器并收集有关执行路径的跟踪详细信息。在此处查看有关您需要的设置的更多信息:msdn.microsoft.com/en-us/library/vstudio/hh398365.aspx。一旦启动并运行,您将能够准确地看到执行了什么,并希望查明问题。

标签: .net windows-services windows-server-2008-r2


【解决方案1】:

我已经通过几个步骤弄清楚了发生了什么:

  1. 我已经编写了控制台应用程序 - 封装了服务中 OnStart 方法中基本上完成的工作。
  2. 我已执行控制台应用程序 - 应用程序正常启动。
  3. 我已将服务配置文件的内容复制到控制台应用程序配置文件中。
  4. 我再次执行了控制台应用程序 - 应用程序立即静默中止(出人意料地类似于我们的服务行为,有问题)。
  5. 我比较了 2 个配置 - 来自服务和来自控制台应用程序的原始配置。结果,我发现了一些差异。其中,有这样一个条目——问题的根源(删除后,一切正常):

    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    

所以基本上我有过时的配置文件。以前服务是在.NET 4.5下编译的,然后我将框架更改为4.0并将文件部署到服务器,但保留了以前的配置文件(我更改了目标框架,因为我的开发机器有.NET 4.5而服务器有不是)。我不会想到显示的行会在没有任何合理信息的情况下隐藏所有问题,这有助于跟踪混乱。

【讨论】:

  • 非常感谢您的回答。这为我节省了很多时间!
【解决方案2】:

检查缺少的依赖项/DLL。

如果您还没有这样做,请让您的服务作为常规应用程序调用(长期调试的一个很好的技术),看看它是否在您的 Windows 2008 机器上正常启动。

如果以这种方式工作,那么在 LocalSystem 帐户中运行可能会出现问题。继续从在 LocalSystem 帐户 (example setup here) 中运行的命令提示符启动您的应用程序。

【讨论】:

    【解决方案3】:

    我尝试了link提供的以下修复

    1. 单击开始,单击运行,键入 regedit,然后单击确定。

    2. 找到并单击以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

    3. 在右侧窗格中,找到 ServicesPipeTimeout 条目。
      注意 如果 ServicesPipeTimeout 条目不存在,您必须创建它。为此,请按以下步骤操作:
      一种。在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
      湾。键入 ServicesPipeTimeout,然后按 ENTER。
    4. 右键单击 ServicesPipeTimeout,然后单击修改。
    5. 单击十进制,键入 60000,然后单击确定。
      此值表示服务超时之前的时间(以毫秒为单位)。
    6. 重新启动计算机。

    但我仍然无法启动服务。

    对我有用的解决方法是,

    1. 转到 services.msc
    2. 双击您要启动的服务。
    3. 使用登录选项卡
    4. 将登录身份更改为:本地系统帐户。
    5. 尝试在此更改后启动服务。(仍然给出 1053 错误)
    6. 再次选择登录选项卡,将其更改为网络服务(随机提供新密码)
    7. 再次尝试启动服务。(服务启动完美)

    【讨论】:

      【解决方案4】:

      我尝试了以下步骤。它就像一个魅力。

      1.转到 services.msc 2.双击您要启动的服务。 3.Take 登录选项卡 4.更改登录为:本地系统帐户。 5.修改后尝试启动服务。(还是报1053错误) 6.再次选择登录选项卡,将其更改为网络服务(随机提供新密码) 7.尝试再次启动服务。(服务完美启动)

      但我只是想知道会是什么问题。

      【讨论】:

        【解决方案5】:

        安装服务后,我必须授予安装文件夹的完全控制权限(所有人)。然后,我的服务将完美启动。

        【讨论】:

          猜你喜欢
          • 2014-08-13
          • 2023-03-06
          • 2011-11-16
          • 2011-06-15
          • 1970-01-01
          • 2012-03-25
          • 1970-01-01
          • 2011-09-10
          • 2016-01-09
          相关资源
          最近更新 更多