诗情寻知己
揽几缕、轻挽起,暮暮朝朝与君语。

.net 5 Windows服务形式打包

 

1、为了将应用转换成Windows服务,我们需要引入一个包,如下:

Microsoft.Extensions.Hosting.WindowsServices

引用方式有以下两种比较方便的形式:

  1. 使用NuGet包管理器,在浏览中输入“Microsoft.Extensions.Hosting.WindowsServices”,搜索后选择比较稳定的版本(前提符合当前项目引用依赖)
  2. 使用程序包管理器控制台,选择需要安装的项目,执行以下语句:Install-Package Microsoft.Extensions.Hosting.WindowsServices

 

2、修改代码(读取配置请一定使用AppContext.BaseDirectory,要不然会导致无法读取配置的情况)

需要修改Program.cs文件,添加UseWindowsService()方法的调用。

    public class Program

    {

        public static void Main(string[] args)

        {

            CreateHostBuilder(args).Build().Run();

        }

 

        public static IHostBuilder CreateHostBuilder(string[] args) =>

            Host.CreateDefaultBuilder(args)

                .ConfigureLogging((hostingContext, builder) =>

                {

                    Var path=Path.Combine(AppContext.BaseDirectory, "Helpers/Logger/Log4net.config");

                    builder.AddLog4Net(path);

                })

                .ConfigureWebHostDefaults(webBuilder =>

                {

                    webBuilder.UseStartup<Startup>();

                })

                .UseWindowsService();

    }

 在配置文件appsettings.json中添加节点   "urls": "http://*:8080"   ,如果需要本地调试,可以将urls节点注释,就可以正常启动调试

3、发布

使用Visual Studio发布,请参考如下图所示:

 

 

  

当我们把发布好的文件在服务器保存好以后,管理员身份打开cmd,执行这条命令:

sc create 服务名称 binPath= "\"C:\program files\dotnet\dotnet.exe\" \"程序发布目录\"" DisplayName= "你的服务名称" start= auto 

(重点:binPath、DisplayName、start这三个参数的等号后面必须带一个空格)

然后就可以在服务列表里看到启动的服务

 

  

sc start 服务名称     --启动服务

sc stop 服务名称     --停止服务

sc delete  服务名称  --删除服务

如果项目无法启动,可以通过系统日志查看日志。

 

posted on 2022-05-17 14:52  诗情寻知己  阅读(403)  评论(0)    收藏  举报