.net-core - UseWindowsService 无法启动服务
问题描述
有一个我正在尝试将其部署为 Windows 服务的 .Net Core 5.0 API 应用程序。
我已经使用 CreateDefaultBuilder 添加了 UseWindowsService(),并且能够构建和发布。
然后我用 sc create 注册服务。在这一点上,一切似乎都很好。
但是,当我尝试启动该服务时,我收到一条错误消息,指出该服务没有及时响应。
我认为添加对 UseWindowsService 的调用就足够了,但是我已经看到了 Main 是异步任务函数而不是 void 的其他示例。
Main 是否必须异步才能作为服务运行?如果没有,为什么我的应用程序不能作为服务正确运行?
解决方案
检查服务启动时应用程序是否抛出异常,如下所示:
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();
}