.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 参数名 参数值 //设置服务参数值

 

才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢

 

 

posted @ 2022-08-11 15:27  独角马  阅读(1574)  评论(2编辑  收藏  举报