"Error 1053 The Service did not respond" 使用 TopShelf 创建 Windows 服务时出错

"Error 1053 The Service did not respond" error when using TopShelf to create a Windows Service

我有一个使用 TopShelf 库创建的 Windows 服务。尝试启动服务时,出现错误:

Windows could not start the HPS.MyService.Service service on Local Computer

Error 1053: The service did not respond to the start of control request in a timely fashion.

这个错误在启动时立即发生,没有 30 秒的延迟。

我的服务的 TopShelf 代码如下所示:

public static void Main()
{
    HostFactory.Run(x =>
    {
        x.Service<TopshelfHangfireService>();
        x.EnableServiceRecovery(r => r.RestartService(TimeSpan.FromSeconds(30)));
        x.SetServiceName("HPS.MyService");
        x.StartAutomaticallyDelayed();
    });
}

我已经验证我可以 运行 直接从控制台 window 此服务,方法是使用服务应该 运行 的相同帐户调用可执行文件。

为什么我会收到此错误 - 如何让我的服务成功启动?

如错误消息所示,此服务安装时的服务名称为“HPS.MyService.Service”,但 C# 代码试图将其显式设置为“HPS.MyService”。名称之间的这种不匹配是错误的来源。您可以在安装时将服务名称更改为“HPS.MyService”,或者将服务名称行更改为

x.SetServiceName("HPS.MyService.Service");

或者:完全删除对 x.SetServiceName 的调用,因为这会限制您使用特定的服务名称,并且无论如何您都可以在安装时控制服务名称。