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 参数名 参数值 //设置服务参数值
才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢
相关文章
- c#.Net.NetCore面试(四十四)c#/net/netcore读取文件
- iNeuOS工业互联网操作系统,从NetCore3.1升级到Net6的过程汇报
- c#.Net.NetCore面试(二十二)c# Hashtable(哈希表)解析
- 开发现代化的.NetCore控制台程序:(4)使用GithubAction自动构建以及发布nuget包
- Netcore部署和使用docker
- .NetCore中使用分布式事务DTM的二阶段消息
- 3-跟我一起学.NetCore之依赖注入
- 微软停止更新 .NET Standard 今后转向.NET 5
- c#.Net.NetCore面试(六)readonly与const区别?
- c#.Net.NetCore面试(三十九)选择排序算法