• Net Core 5.0 Windows服务形式打包


    .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  服务名称  --删除服务

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

  • 相关阅读:
    java String 转Json报错 java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntim
    Idea 进行断点调试的 快捷键
    spring AOP的使用步骤
    AOP的定义和原理
    SpringBoot入门篇--使用IDEA创建一个SpringBoot项目
    详解CI、CD相关概念
    intellij idea 的全局搜索快捷键方法
    面向对象之工厂模式与构造函数模式的区别
    冒泡排序和快速排序
    java里的数组和list分别在什么情况下使用?
  • 原文地址:https://www.cnblogs.com/bingshao/p/16280796.html
Copyright © 2020-2023  润新知