.NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记
10 | 環境變量配置提供程序:容器環境下配置注入的最佳途徑
環境變量的配置提供程序主要適應場景:
1、在 Docker 中運行時
2、在 Kubernetes 中運行時
3、需要設置 ASP.NET Core 的一些內置特殊配置時
環境變量和命令行這兩個提供程序在早期是沒有容器化的,當時一個操作系統會跑多個應用程序,應用程序注入配置的方式一般都是通過文件或者是命令行的方式來注入的,環境變量當時用的比較少
現在在容器化的環境下,有了 Docker 的隔離能力,就意味著每一個應用程序都相當于跑在一個小型的操作系統下面一樣,所以說這個時候 Docker 提供的環境隔離能力讓我們可以使用環境變量來配置應用程序,在 Docker 和 Kubernetes 中,會大量使用環境變量,而不是使用命令行來配置基礎配置
環境變量的配置有如下特點:
1、對于配置的分層鍵,支持使用雙下橫線 "__" 代替 ":"
2、支持根據前綴加載
在某些操作系統,比如說 Linux 下面,冒號作為環境變量的 Key 值是不行的,所以說這里支持用雙下劃線來代替冒號,也就是說當遇到雙下劃線的環境變量時,可以認為這是一個分層鍵
環境變量提供程序還支持根據環境變量的前綴來加載
接下來時代碼演示
源碼鏈接:
https://github.com/witskeeper/geektime/tree/master/samples/ConfigurationEnvironmentVariablesDemo
首先引入三個包
Microsoft.Extensions.Configuration.Abstractions
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.EnvironmentVariables
然后看一下環境變量如何在調試環境下注入
右鍵項目,屬性,調試,環境變量
同樣的在 Properties 下的 launchSettings.json 可以看到配置
{"profiles": {"ConfigurationEnvironmentVariablesDemo": {"commandName": "Project","environmentVariables": {"KEY1": "value1","KEY2": "value2","SECTION1__KEY3": "value3","SECTION1__SECTION2__KEY4": "value4","XIAO_KEY1": "xiao key1"}}} }主程序
namespace ConfigurationEnvironmentVariablesDemo {class Program{static void Main(string[] args){var builder = new ConfigurationBuilder();builder.AddEnvironmentVariables();var configurationRoot = builder.Build();Console.WriteLine($"key1:{configurationRoot["key1"]}");}} }啟動程序,輸出如下:
key1:value1分層鍵
// "SECTION1__KEY3": "value3" // 我們定義了一個分層鍵 SECTION1,用雙下劃線隔開,這個 p 下面有一個 KEY3 的 Key var p = configurationRoot.GetSection("SECTION1"); Console.WriteLine($"KEY3:{p["KEY3"]}");啟動程序,輸出如下:
KEY3:value3多級分層鍵
// "SECTION1__SECTION2__KEY4": "value4" var p2 = configurationRoot.GetSection("SECTION1:SECTION2"); Console.WriteLine($"KEY4:{p2["KEY4"]}");啟動程序,輸出如下:
KEY4:value4前綴過濾:是指在注入環境變量的時候,指定一個前綴,意味著只注入指定前綴的環境變量,而不是把整個操作系統的所有環境變量注入進去
// "XIAO_KEY1": "xiao key1" // build 之后把讀取到的環境變量的前綴去掉 builder.AddEnvironmentVariables("XIAO_"); var configurationRoot = builder.Build(); Console.WriteLine($"KEY1:{configurationRoot["KEY1"]}"); // "KEY2": "value2" // 在注入的時候,凡是沒有 XIAO_ 開頭的 Key 都沒有注入進來,僅注冊進來需要的一個環境變量值 // 適合當需要加載特定的值,去掉系統其他值的干擾項的場景使用 Console.WriteLine($"KEY2:{configurationRoot["KEY2"]}");啟動程序,輸出如下:
KEY1:xiao key1 KEY2:value2 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的.NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Magicodes.IE基础教程之导出P
- 下一篇: dotnetcore3.1 WPF 实现