首页 > 解决方案 > UseWindowsService 无法启动服务

问题描述

有一个我正在尝试将其部署为 Windows 服务的 .Net Core 5.0 API 应用程序。

我已经使用 CreateDefaultBuilder 添加了 UseWindowsService(),并且能够构建和发布。

然后我用 sc create 注册服务。在这一点上,一切似乎都很好。

但是,当我尝试启动该服务时,我收到一条错误消息,指出该服务没有及时响应。

我认为添加对 UseWindowsService 的调用就足够了,但是我已经看到了 Main 是异步任务函数而不是 void 的其他示例。

Main 是否必须异步才能作为服务运行?如果没有,为什么我的应用程序不能作为服务正确运行?

标签: .net-corewindows-services

解决方案


检查服务启动时应用程序是否抛出异常,如下所示:

public class Program
{
    public static void Main(string[] args)
    {
        try
        {
            CreateHostBuilder(args).Build().Run();
        }
        catch (Exception ex)
        {
            File.WriteAllText("some/folder/start-error.log", ex.ToString());
        }
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            .UseWindowsService();
}


推荐阅读