【问题标题】:Windows Service won't automatically start after reboot [duplicate]重启后Windows服务不会自动启动[重复]
【发布时间】:2011-04-12 19:23:14
【问题描述】:

我的自动启动 Windows 服务仅在重新启动时无法启动。我有一个用 C# 创建并通过 Wix 创建的安装程序安装的 Windows 服务。该服务设置为自动启动。该服务在 NT AUTHORITY\NETWORK SERVICE 下安装并运行。当服务启动时,它首先进行外部 Web 服务调用。

在 Windows 7 中,我可以将服务设置为自动 - 延迟启动,服务将在重新启动时启动,没问题。但是,此选项在 Windows XP 中不可用,并且当设置为自动启动时,服务会因

而失败

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

如果我在登录过程后尝试手动启动,服务启动正常,只有当服务尝试在重新启动时自动启动时才会出现问题,让我相信我需要添加依赖服务到我的服务,让它正确启动。

谁能指出正确的依赖关系或替代方法?

【问题讨论】:

    标签: c# .net windows-services installation wix


    【解决方案1】:

    您可能存在具有依赖关系的竞争条件。您可以通过将服务配置为依赖于另一个服务(例如 tcp/ip )来解决此问题,但我真正要做的是重写您的服务,以便在启动的关键执行路径期间不需要进行此调用。如果有需要解决的问题,它应该定期尝试在稍后进行 Web 服务调用并记录有用的消息或将消息发送到任务栏实用程序或类似工具。

    【讨论】:

    • 我考虑过两者都做。问题是调用是为了检索远程配置设置,因此作为 SettingsProvider 的扩展内置在 Settings 中。
    • 很抱歉,但必须这样做。基本设计充其量是脆弱的。 Web 是无状态的,假设它是其他任何东西都是错误的。
    • 我听取了您的建议,并让我的 OnStart() 方法完成了最低限度的功能,并启动了一个稍后执行的 Timer,以下拉配置设置并初始化服务功能。
    【解决方案2】:

    我在 4 台新服务器上遇到了同样的问题。我将 W32 服务设置为自动延迟,它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      相关资源
      最近更新 更多