ASP.NET Core では ConfigurationBuilder を使用してアプリケーションの設定を構成する。
ただ、あまりこれを自分で呼び出すことはなく、大体はデフォルト構成で済んでしまう。 その場合はいい感じに構成される。
特別な事情があって自分で構成する場合は、構成メソッドの呼び出しに注意する。 同一のキーの設定値があった場合、後に呼び出した構成メソッドで値が上書きされていく。
私はこのような順で構成し、設定ファイル( appsettings.json
)のダミー値が採用されました。
var config = new ConfigurationBuilder() .AddCommandLine(args) .AddEnvironmentVariables() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: false) .Build();
実行時引数 < 環境変数 < 設定ファイル の順(強さ)で適用される。 逆だろ! 普通!!
尚、無意識に使うASP.NET Coreのデフォルト構成はこのような感じでした。 完璧ですね。
.ConfigureAppConfiguration((hostingContext, config) => { var env = hostingContext.HostingEnvironment; config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); if (env.IsDevelopment()) { var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName)); if (appAssembly != null) { config.AddUserSecrets(appAssembly, optional: true); } } config.AddEnvironmentVariables(); if (args != null) { config.AddCommandLine(args); } })
ドキュメントに解説もあります。
ASP.NET Core の Web ホスト | Microsoft Docs
次の順序でアプリの構成を読み込みます。 - appsettings.json。 - appsettings.{Environment}.json。 - エントリ アセンブリを使用して Development 環境でアプリが実行される場合に使用されるシークレット マネージャー。 - 環境変数。 - コマンド ライン引数。
このBlogでは何度も書いていますが、みなさん「ドキュメントはしっかり読みましょう」。それでは。