.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 张国生