.net core api部署为windows服务
一、项目改造
添加nuget包:Microsoft.Extensions.Hosting.WindowsServices
添加JOCAPIService类:
JOCAPIService.cs
C# 全选
public class JOCAPIService : BackgroundService
{
	public JOCAPIService(ILoggerFactory loggerFactory)
	{
		Logger = loggerFactory.CreateLogger<JOCAPIService>();
	}
	public ILogger Logger { get; }
	protected override async Task ExecuteAsync(CancellationToken stoppingToken)
	{
		Logger.LogInformation("ServiceA is starting.");
		stoppingToken.Register(() => Logger.LogInformation("ServiceA is stopping."));
		while (!stoppingToken.IsCancellationRequested)
		{
			Logger.LogInformation("ServiceA is doing background work.");
			await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
		}
		Logger.LogInformation("ServiceA has stopped.");
	}
}修改Program.cs代码
C# 全选
public static IHostBuilder CreateHostBuilder(string[] args) =>
	Host.CreateDefaultBuilder(args)
		.ConfigureWebHostDefaults(webBuilder =>
		{
			webBuilder.UseStartup<Startup>();
		}).ConfigureServices(services =>
		{
			services.AddHostedService<JOCAPIService>();
		}).UseWindowsService(options =>
		{
			options.ServiceName = "JOCAPI";
		});
二、安装服务
1) PowserShell安装脚本
创建服务:
PowerShell 全选
New-Service -Name "JOCAPI" -BinaryPathName "D:\publish\JOCAPI.Start.exe" -DisplayName "JOCAPI" -Description "JOC开发框架API服务" -StartupType Automatic删除服务:
PowerShell 全选
sc.exe delete "JOCAPI"启动服务:
PowerShell 全选
# 启动服务
Start-Service -Name “JOCAPI”2) nssm.exe安装

服务配置:configService.bat
PowerShell 全选
set serviceName="TCEServices1"
set exePath="JOCAPI.Start.exe"为了解决多个脚本文件中都存在serviceName,如果要改的话要改动四个文件,有点繁琐,优化一下,增加一个configService.bat文件,要调整服务配置的时候只需要更改这一个bat脚本就行了
安装服务:installService.bat
PowerShell 全选
cd /d %~dp0
call configService.bat
nssm install %serviceName% %~dp0\%exePath%
nssm start %serviceName%
pause卸载服务:uninstallService.bat
PowerShell 全选
cd /d %~dp0
call configService.bat
nssm stop %serviceName%
nssm remove %serviceName% confirm
pause启动服务:startService.bat
PowerShell 全选
cd /d %~dp0
call configService.bat
nssm start %serviceName%
pause停止服务:stopService.bat
PowerShell 全选
cd /d %~dp0
call configService.bat
nssm stop %serviceName%
pause
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生  
 
 

