【发布时间】:2018-07-16 17:36:55
【问题描述】:
我的工作进程是一个 .net 核心控制台应用程序。如何像 Windows 服务一样托管它?
因为在当前的实现中,我认为如果我将它打包成类似 nssm 的东西,它会因为 Console.ReadKey(); 而卡住。但我仍然需要处理停止事件。
public class Program
{
private Program()
{
}
public static void Main()
{
var services = new ServiceCollection();
var startup = new Startup();
startup.ConfigureServices(services);
var serviceProvider = services.BuildServiceProvider();
var workerService = serviceProvider.GetService<WorkerService>();
workerService.Run();
Console.WriteLine("Listening for messages. Hit any key to quit.");
Console.ReadKey();
workerService.Stop();
}
}
【问题讨论】:
-
这是 ASP.NET Core 应用程序还是标准 .NET Core 控制台应用程序?如果是这样,有一些方法可以将 .NET 控制台应用程序“托管”为 Windows 服务(不像内置的 int ASP.NET 核心方法那么简单)ben-morris.com/…