.NETのコア開発の実際の戦闘(レッスン10:環境変数の設定プロバイダ) - 研究ノート

10 |環境変数の設定プロバイダ:コンテナ環境下で注入を設定するための最良の方法

主要なシーンに適応するために、プロバイダの環境変数を設定します。

ドッカーで実行されている1、

2、Kubernetesを実行しています

3は、あなたが設定する必要があり、いくつかの組み込みのASP.NETコアの特別な設定

早く、複数のアプリケーションを実行するときに、オペレーティングシステム、アプリケーションコンテナ化コンフィギュレーションモードされていないの両方で環境変数、およびコマンド・ライン・プロバイダは、一般的に、注射にファイルまたはコマンドラインを介して注入されています環境変数は以下を使用しました

今、コンテナ環境の中で、ドッカーの分離と、それは我々が環境を提供できるように、各アプリケーションはそれほど環境隔離ドッカーことを、今回と同じシステムの下で小さな動作を実行するのと同じであることを意味しますドッカーとKubernetes、環境変数を頻繁に使用してアプリケーションを設定するには、変数ではなく、基本的な設定を設定するには、コマンドラインを使用して

設定の環境変数は、次の特徴があります。

1の代わりに、二重のアンダースコアを「__」をサポートするための階層構成のためのキー、「:」

2、接頭辞に係るローディングのためのサポート

例えば、以下のLinuxなどの一部のオペレーティング・システムでは、環境変数のキー値としてコロンは二重下線によって、このサポートは二重下線の環境変数に直面したとき、あなたはこれがあると考えることができると言うことですコロンを交換するように、十分ではありません階層化キー

環境変数プロバイダーは、負荷への環境変数の接頭辞に係る支持します

そして、時にコードのショー

ソースリンク:
https://github.com/witskeeper/geektime/tree/master/samples/ConfigurationEnvironmentVariablesDemo

最初は3つのパッケージを導入しました

  • Microsoft.Extensions.Configuration.Abstractions
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.EnvironmentVariables

次に、どのように環境変数を見て、デバッグ環境下で注入しました

右プロジェクト、財産、デバッグ、環境変数

同じ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,用双下划线隔开,这个 section 下面有一个 KEY3 的 Key
var section = configurationRoot.GetSection("SECTION1");
Console.WriteLine($"KEY3:{section["KEY3"]}");

次のようにプログラムを起動し、出力は次のようになります。

KEY3:value3

マルチレベルの階層の鍵

// "SECTION1__SECTION2__KEY4": "value4"
var section2 = configurationRoot.GetSection("SECTION1:SECTION2");
Console.WriteLine($"KEY4:{section2["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

クリエイティブコモンズライセンス

この作品は、ある非営利- -同一条件許諾4.0の国際ライセンス契約クリエイティブ・コモンズのライセンスのために。

転載、使用、再投稿へようこそ、しかし鄭Ziming(リンクを含む:http://www.cnblogs.com/MingsonZheng/)によって署名された記事を保つようにしてください、商業目的のために使用してはならない、紙のライセンス変更に基づいて、同じ作業を公開するようにしてください。

ご質問があれば、私に連絡してください([email protected])。

おすすめ

転載: www.cnblogs.com/MingsonZheng/p/12370142.html