码迷,mamicode.com
首页 > Web开发 > 详细

重新整理 .net core 实践篇—————配置文件之环境配置[九]

时间:2021-06-03 17:37:44      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:inf   环境变量   好的   系统   com   互联网   near   微服务   OLE   

前言

在当今在互联网微服务比较适用的情况下,docker 可以说一个利器。每次我们打包docker的时候都是适用docker 的配置文件,那么配置文件里面会设置环境变量,这个时候需要我们的应用能够识别到这些环境变量并作出相应的选择。

适用场景:

docker 运行环境

k8s 运行环境

因为他们都是隔离机制的,故而环境变量能够发挥其非常好的作用。

正文

引入:microsoft.extensions.configuration.environmentVariables 这个包。

设置环境变量:

技术图片

对应的lauchSettings.json 如下:

{
  "profiles": {
    "ConfigureDemo": {
      "commandName": "Project",
      "commandLineArgs": "-k1=value4",
      "environmentVariables": {
        "section1__key2": "value2",
        "key1": "value1"
      }
    }
  }
}

这个section1__key2,section1和key2 之间是两个_,作为他们的分层符号。

代码:

IConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddEnvironmentVariables();

var configurationRoot = builder.Build();
Console.WriteLine($"key1:{configurationRoot["key1"]}");

var section = configurationRoot.GetSection("section1");
Console.WriteLine($"key2:{section["key2"]}");

运行结果:

技术图片

无限套娃模式也是适用的,前面原理已经讲过了,这里只演示代码。

{
  "profiles": {
    "ConfigureDemo": {
      "commandName": "Project",
      "commandLineArgs": "-k1=value4",
      "environmentVariables": {
        "section1__key2": "value2",
        "key1": "value1",
        "section2__section3__key3": "value3"
      }
    }
  }
}

代码:

IConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddEnvironmentVariables();

var configurationRoot = builder.Build();
Console.WriteLine($"key1:{configurationRoot["key1"]}");

var section = configurationRoot.GetSection("section1");
Console.WriteLine($"key2:{section["key2"]}");

var section2 = configurationRoot.GetSection("section2");
var section3 = section2.GetSection("section3");
Console.WriteLine($"key3:{section3["key3"]}");

技术图片

除了上面的__可以作为section的分层符之外,:也是可以的。

下面演示前缀过滤:

{
  "profiles": {
    "ConfigureDemo": {
      "commandName": "Project",
      "commandLineArgs": "-k1=value4",
      "environmentVariables": {
        "key1": "value1",
        "k8s_key2": "value2" 
      }
    }
  }
}

代码:

IConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddEnvironmentVariables("k8s_");

var configurationRoot = builder.Build();

Console.WriteLine($"key1:{configurationRoot["key1"]}");
Console.WriteLine($"key2:{configurationRoot["key2"]}");

结果:

技术图片

就是说不是k8s_会被过滤掉。

下一节 配置系统之强类型配置。

以上只是个人整理,如有错误,望请指点,谢谢。

重新整理 .net core 实践篇—————配置文件之环境配置[九]

标签:inf   环境变量   好的   系统   com   互联网   near   微服务   OLE   

原文地址:https://www.cnblogs.com/aoximin/p/14827241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!