1.10 配置框架:使用环境变量配置提供程序接收环境变量.pdf

    早期一个操作系统运行多个应用程序,所以应用程序注入配置的方式一般都是通过文件或命令行。

    有了 Docker 后,每个应用程序相当于运行于一个独立的操作系统中,即 Docker 提供的环境隔离能力,让我们能更方便的使用环境变量来配置应用程序。

    环境变量依然可以直接在 launchSettings.json 进行编辑:

    1. {
    2. "profiles": {
    3. "ConfigurationEnvironmentVariablesDemo": {
    4. "commandName": "Project",
    5. "environmentVariables": {
    6. "KEY1": "value1",
    7. "KEY2": "value2",
    8. "SECTION1__KEY3": "value3",
    9. "SECTION1__SECTION2__KEY4": "value4",
    10. "XIAO_KEY1": "xiao key1"
    11. }
    12. }
    13. }
    14. }

    前缀过滤:仅注入指定前缀的环境变量

    1. static void Main(string[] args)
    2. {
    3. var builder = new ConfigurationBuilder();
    4. //builder.AddEnvironmentVariables();
    5. //var configurationRoot = builder.Build();
    6. //Console.WriteLine($"key1:{configurationRoot["key1"]}");
    7. //Console.WriteLine($"key2:{configurationRoot["key2"]}");
    8. //#region 分层键
    9. //var section = configurationRoot.GetSection("SECTION1");
    10. //Console.WriteLine($"KEY3:{section["KEY3"]}");
    11. //var section2 = configurationRoot.GetSection("SECTION1:SECTION2");
    12. //Console.WriteLine($"KEY4:{section2["KEY4"]}");
    13. //#endregion
    14. #region 前缀过滤
    15. builder.AddEnvironmentVariables("XIAO_");
    16. var configurationRoot = builder.Build();
    17. Console.WriteLine($"KEY1:{configurationRoot["KEY1"]}");
    18. Console.WriteLine($"KEY2:{configurationRoot["KEY2"]}");
    19. #endregion
    20. }

    前缀过滤效果:
    image.png