.NetCore创建Windows服务和项目托管至Windows服务中
本文实例环境及版本 .NetCore3.1、windows
一、.NetCore创建windows服务,将web项目托管到windows服务中
1、新建项目 Worker Service
2、引用 Microsoft.Extensions.Hosting
Microsoft.Extensions.Hosting.WindowsServices 注意版本为3.1.X
3、修改Program
public static IHostBuilder CreateHostBuilder(string[] args) { var host = Host.CreateDefaultBuilder(args); //判断当前系统是否为windows if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { //使用windows服务 host.UseWindowsService(); } host.ConfigureLogging(builder => builder.AddFile()); return host.ConfigureServices((hostContext, services) => { //注册具体要运行的类 services.AddHostedService<Worker>(); }); }
4、Worker类代码参考
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogInformation("Worker测试 服务开启了2"); stoppingToken.Register(() => _logger.LogInformation("Worker测试 服务正在停止2")); while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Worker测试 服务在运行中2"); await Task.Delay(TimeSpan.FromSeconds(20), stoppingToken); } _logger.LogInformation("Worker测试 服务已停止2"); } public override Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Worker测试 服务开启了3"); return base.StartAsync(cancellationToken); } public override Task StopAsync(CancellationToken cancellationToken) { _logger.LogInformation("Worker测试 服务已停止了3"); return base.StopAsync(cancellationToken); }
5、发布项目,注意修改配置,选择windows平台
6、cd到发布目录,输入sc create 服务名 binpath="项目发布目录" 来注册服务
如:
然后可使用如下命令开启windows服务或手动开启
其他命令
//开启服务
sc start 服务名
//关闭服务
sc stop 服务名
//删除服务
sc delete 服务名
补充说明:
将.NetCore的web项目托管到windows服务中
新建web项目,其他操作参看上面,不过记得给系统指定访问的端口
.ConfigureWebHostDefaults(webBuilder => { //记得指定系统访问的端口号 webBuilder.UseUrls("http://*:5360"); webBuilder.UseStartup<Startup>(); })
发布时也要选择windows平台
生成服务后启动服务,即可通过浏览器访问
二、使用NSSM安装windows服务
1、nssm是一个服务封装程序,它可以将普通exe程序封装成服务,实现开机自启动。
官网下载地址:https://nssm.cc/download
下载后解压,根据系统选择64位或32位
将nssm.exe程序放到程序的发布目录根目录下
2、cmd打开命令行cd到程序发布目录
输入
nssm install
然后选择程序的.exe可执行文件
配置项说明:
-
Path:运行应用程序的程序
-
Startup directory:应用程序所在的目录
-
Arguments:应用运行的参数
-
Service name:生成服务的名称
2、最后点击install service 完成windows服务安装,在windows服务列表就能看到创建的服务了。
然后启动服务即可。
常用命令
nssm install servername //创建servername服务,弹出配置界面 nssm start servername //启动服务 nssm stop servername //暂停服务 nssm restart servername //重新启动服务 nssm remove servername //删除创建的servername服务 nssm edit servername//更改servername服务,弹出修改界面 nssm set servername 参数名 参数值 //设置服务参数值
才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢