【问题标题】:Error installing Windows service -- The service did not respond to the start or control request in a timely fashion安装 Windows 服务时出错——服务没有及时响应启动或控制请求
【发布时间】:2012-05-30 23:06:50
【问题描述】:

我在我的机器上安装了一个 Windows 服务应用程序,没有问题。我去另一台机器上安装它,我收到错误

错误 1001。在安装的提交阶段发生异常。此异常将被忽略,安装将继续。但是,安装完成后应用程序可能无法正常运行。无法在计算机“.”上启动服务 MyService。服务没有及时响应启动或控制请求。

此错误立即弹出,没有任何挂起。通常我只希望在挂起后看到这个错误。

我正在使用安装在两台机器上的 .NET 4 框架。我尝试禁用可能会干扰服务启动的防病毒程序,但这会产生相同的错误。防火墙也被禁用了。

还有其他可能导致此问题的原因吗?

【问题讨论】:

  • 几乎可以肯定发生了异常,可能是在启动时。您是否记录了可能会逃避您的服务实施的异常?
  • 是的,在 OnStart 操作中,我发现了一个异常,其中包含以下详细信息:异常消息: 无法在计算机“。”上启动服务 CHD。 堆栈跟踪: 在 System.ServiceProcess.ServiceController.Start(String[] args) 在 System.ServiceProcess.ServiceController.Start() 在 CHD.ProjectInstaller.OnCommitted(IDictionary savedState) 来源: System.ServiceProcess 内部异常:System.ComponentModel.Win32Exception (0x80004005):服务没有及时响应启动或控制请求
  • 如果您能告诉我们您的服务在开始时执行了哪些工作,这将有助于我们回答您的问题。
  • 顺便说一句,OnStart 也必须在 30 秒内返回;通常你在一个线程中启动你的服务然后返回。见stackoverflow.com/questions/216401/…

标签: c# .net windows-services


【解决方案1】:

此行为通常发生在 WinService 的 OnStart method 中引发异常并且未在 try-catch 块中捕获时。我相信您可以使用 EventViewer 查看异常消息和堆栈跟踪,如果没有,您可以使用 EventLog class 轻松实现简单的日志记录功能。

有时会抛出异常,因为服务未在特权帐户下运行。要解决此问题,您必须配置安装程序的 ServiceProcessInstaller object,如下所示:

myServiceInstaller.Account = ServiceAccount.User;
myServiceInstaller.Username = "Domain name\User name";
myServiceInstaller.Password = "qwerty";

【讨论】:

  • 另一个常见的原因可能是有人忘记将其编译为 windows 服务而不是 winforms 应用程序。有时我自己忘记了,因为我一直使用 winforms 应用程序来调试服务。
【解决方案2】:

感谢大家的帮助。我意识到问题是由于安装在两台不同机器上的 .NET Framework 造成的。我的机器有 .NET Framework 4 Client Profile 和 .NET Framework 4 Extended,而另一台机器只有 .NET Framework 4 Client Profile。显然,服务中的某些组件需要 .NET Framework 4 客户端配置文件中不存在的库。

【讨论】:

    【解决方案3】:

    由于您的服务在另一台计算机上运行,​​并且假设两者的代码相同,因此问题可能与权限有关。确保运行您的服务的帐户对其写入文件的任何文件夹具有足够的权限。如果您写入事件日志,请确保服务帐户具有必要的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2011-03-28
      • 2014-08-05
      • 2011-01-05
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多