zoukankan      html  css  js  c++  java
  • ASP.NET Core多环境配置文件问题

    前言

    在我们开发的过程中,往往会有这几个环境,Dev、QA、Pre和Pro。

    当然不同的环境可能大家的叫法会有点不一样。

    最常遇到的问题,或许就是不同环境的配置文件问题!

    一个环境一个配置文件是很常见的做法。

    在开发的时候,我们可以通过修改launchSettings.json来达到不同环境的切换。

    本质是通过ASPNETCORE_ENVIRONMENT这个变量值来完成。

    但是部署到服务器的时候就需要换个方式来处理这个问题了。 因为发布后的文件并没有launchSettings.json。

    这里简单介绍两种方法来处理这个问题。

    方法1

    设置系统的环境变量。

    修改 /etc/profile 文件,添加下面的配置

    export ASPNETCORE_ENVIRONMENT=QA
    

    再执行source命令,使其生效。

    source /etc/profile
    

    执行 dotnet myweb.dll 的时候就可以看到下面的结果

    Hosting environment: QA
    Content root path: /var/www/testweb
    Now listening on: http://127.0.0.1:47372
    Application started. Press Ctrl+C to shut down.
    

    这种做法,虽然可以完成不同环境的切换问题,但是要为每台机器设置一个环境变量。

    由于直接是镜像copy出来的系统,好多系统配置是已经做好标准规范的了,所以这样做还是会很麻烦,运维的同学肯定也不愿意每copy一台机器,都帮你改这个东西。

    所以这个方法自已玩玩的机率比较多。

    方法2

    在启动程序的时候,添加一个名为environment的Command-Line参数,同时指定它的值为对应的环境值。

    下面的例子是托管在Jexus时的写法。

    AppHost={
    cmd=dotnet /var/www/testweb/myweb.dll --environment QA; 
    root=/var/www/testweb;  
    port=0;
    }
    

    这个时候看到的日志也是一样的效果。

    Hosting environment: QA
    Content root path: /var/www/testweb
    Now listening on: http://127.0.0.1:47372
    Application started. Press Ctrl+C to shut down.
    

    通过这种方法,可控性看上去比较好,只需要加个参数即可。

    如果用方法2需要注意一点:

    Program.cs中,不要忘记AddCommandLine。

    不过如果用的是WebHost.CreateDefaultBuilder(args)就可以忽略这一点了。

  • 相关阅读:
    展示之前的作品
    let和const的一些知识点
    javascript执行上下文和变量对象
    数据类型隐式转换及数据类型判断方式总结
    CSS元素隐藏方法总结
    ES6 —— 数组总结
    小程序性能相关
    nginx和resin一二三
    修改XAMPP的默认根目录
    面试题延伸及总结
  • 原文地址:https://www.cnblogs.com/catcher1994/p/9676820.html
Copyright © 2011-2022 走看看