• asp.net core托管到windows服务


    前言

    netcore用了这么久,虽然多数都是部署在centos系统,但也有部署在windows上的情况。最省力的部署方式是发布后直接在发布目录打开cmd,运行dotnet命令。虽然很省力,但是保留一个命令窗口,如果需要同时部署多个程序的话,就会保留多个窗口,而且还不能叉掉,对强迫症(我这种)来说简直不能忍。。。。

    所以更好的部署方式就是把程序以windows服务的方式部署,还可以设置自动启动,节省一点运维成本。

    怎么做?

    首先准备一个core程序(废话),然后引入这个包:


    再然后找到main入口:

    public static void Main(string[] args)
    {
        var host = CreateWebHostBuilder(args).Build();
        if (Debugger.IsAttached)
            host.Run();
        else
            host.RunAsService();
    }

    Debugger.IsAttached的意思是:程序是否以debug模式启动,是的话返回true,否则false

    这几行代码的意思就是:如果是debug模式,就还保持窗口启动,到了发布环境就以服务方式启动。

    为什么呢?因为只以服务启动程序的话,debug启动会报错,这样写更方便。

    就这?

    显然不是。我们还需要再服务器搞些动作。

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

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

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

    效果如下:

    然后就可以在服务列表里看到它了:

    如果上面的操作都没问题,但服务就是跑不起来,有可能是SDK版本不对,下对版本就可以了。

    最后贴上官方文档地址:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1&tabs=visual-studio

  • 相关阅读:
    Oracle EBS json
    OAF--基础
    Oracle EBS FA 本年折旧
    Oracle EBS FA 获取累计折旧
    SOAP REST
    Oracle EBS FA 资产取值
    Java ——基础语法
    PL/SQL APIs for Concurrent Processing
    Using Globals in Oracle Reports (Doc ID 34751.1)
    Using SRW Packaged Procedures In Reports (Doc ID 61643.1)
  • 原文地址:https://www.cnblogs.com/muchengqingxin/p/13190189.html
Copyright © 2020-2023  润新知