如果你的asp.net core服务最后会安装到Windows上运行,那么你肯定不想每次都开个控制台窗口来运行你的服务,因为这样每次开机你都需要手动打开你的服务,其次控制台窗口也容易被用户关掉,你的服务会意外地被终止运行。
使用下面的方法可以快速地把你的asp.net core程序做成Windows Service服务,这样你就可以让Windows来帮你管理服务了。
安装 Microsoft.Extensions.Hosting.WindowsServices 包
使用下面的命令,为你的asp.net core项目安装 Microsoft.Extensions.Hosting.WindowsServices 包
Install-Package Microsoft.Extensions.Hosting.WindowsServices
修改 Program.cs
你要做两件事情,第一为Host增加 UseWindowsServices,第二注掉 config.SetBasePath,因为Windows Service程序的默认文件夹是 c:\windows\system32,在那儿你找不到像appsettings.json这样的依赖文件的,在 UseWindowServices 以后,系统会自动把默认文件夹指向服务中的可执行文件所在的位置。下面是示例代码,注意我们把UseWindowsService放到了所有config的最前面。
public static IHostBuilder CreateHostBuilder