appsettings.json 設定を環境変数で上書きできない 質問する

appsettings.json 設定を環境変数で上書きできない 質問する

appsettings.json環境変数を使用してファイルの設定を上書きすることはできません。

appsettings.json:

{
  "AppSettings": {
    "LocalUpdatesDir": "<some path>",
    "BinaryDeltaCount": 5,
    "BinaryDeltaFilenameTemplate": "<template>",
    "Azure": {
      "User": "user here",
      "Password": "password here"
    }
  },
}

主要:

public static void Main(string[] args)
{
    var webHost = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            var env = hostingContext.HostingEnvironment;
            config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
            config.AddEnvironmentVariables();
        })
        .UseStartup<Startup>()
        .Build();

    webHost.Run();
}

環境変数:

ここに画像の説明を入力してください

アップデート1:

ここで、すべてのプロバイダーが登録されていることがわかります。

ここに画像の説明を入力してください

本当に奇妙なのは、環境変数リストに約 80 個のエントリがあることです。新しい 2 つのエントリが欠落していますが、数時間前に作成してすぐに削除した 2 つの環境変数がそこにあります。これらは一体どこから来ているのでしょうか?

アップデート2:

コンピュータを再起動すると、環境変数がリストに表示されますが、appsettings.json?の値は上書きされません。

ベストアンサー1

環境変数からプレフィックスを削除するASPNETCORE_か、 のパラメータとして追加しますAddEnvironmentVariables。デフォルトではプレフィックスはありません。

編集: 構成を列挙して、キーが期待どおりに並んでいるかどうかを確認してください。

private static void ShowConfig(IConfiguration config)
{
    foreach (var pair in config.GetChildren())
    {
        Console.WriteLine($"{pair.Path} - {pair.Value}");
        ShowConfig(pair);
    }
}

おすすめ記事