Windows无法在Win Server 2008 R2 SP1上启动服务(错误1053)

时间:2013-01-02 11:16:23

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

这个问题似乎已被广泛讨论,但在我的特定情况下找到解决方案时遇到了问题。

我的服务已设置为在Local System帐户下运行。在我的第一台安装了 Windows 7 SP1(64位)的计算机上,一切都按预期工作。但是,在我尝试使用 Windows Server 2008 R2 SP1(64位)在我的第二台计算机上启动服务之后,甚至没有一秒钟通过,我正面临着这个恼人的错误:

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计算机上运行)。如何调查发生了什么?

5 个答案:

答案 0 :(得分:10)

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

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

    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    
  6. 所以基本上我有过时的配置文件。之前的服务是在.NET 4.5下编译的,然后我将框架更改为4.0并将文件部署到服务器,但是保留了以前的配置文件(我已经更改了目标框架,因为我的开发机器有.NET 4.5,而服务器则是不)。我不会想到显示的行会在没有任何合理信息的情况下隐藏所有问题,这可能有助于追踪混乱。

答案 1 :(得分:2)

检查缺少的依赖项/ DLL。

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

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

答案 2 :(得分:1)

我尝试了以下link

提供的以下修复程序
  1. 单击“开始”,单击“运行”,键入regedit,然后单击“确定”。

  2. 找到并单击以下注册表子项: HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制

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

    对我有用的修复是,

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

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

安装服务后,我必须为安装文件夹提供完全控制权限(Everyone)。然后,我的服务将完美地开始。

相关问题