ASP.NET Core の構成情報の上書き方法

技術情報
公開: 2023年11月14日

参考

ASP.NET Core の構成

コマンドライン引数での上書き

コマンド ライン引数

// appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=hoge-db.cbgnljufxr9b.ap-northeast-1.rds.amazonaws.com;Port=5432;Database=hoge;User ID=postgres;Password=fuga;Enlist=true;"
  },
  "Config": {
    "DatabaseType": "PostgreSQL",
    "ProxyDirectory": "",
    "ListenPort": "5000",
    "ManagementUser": {
      "IsAdminSite": false
    },

実行時の引数で設定値を上書きできる

--Config:ProxyDirectory=/admin --Config:ListenPort=5010 --Config:ManagementUser:IsAdminSite=true

実行結果

var app = builder.Build();
var configration = app.Configuration;
var proxyDirectory = configration["Config:ProxyDirectory"]; // /admin
var listenPort = configration["Config:ListenPort"]; // 5010
var isAdminSite = configration["Config:ManagementUser:IsAdminSite"]; // true

構成ファイル(*.json)の追加による上書き

JSON 構成プロバイダー

// appsettings.admin.json 
{
  "Config": {
    "ProxyDirectory": "/admin",
    "ListenPort": "5010",
    "ManagementUser": {
      "IsAdminSite": true
    }
  }
}
// Program.cs

var builder = WebApplication.CreateBuilder(args);
if (args.Length > 0)
{
    builder.Configuration.AddJsonFile(args[0]);
}

上記の例の場合、実行時の最初の引数に構成ファイル(フルパス)を指定することで設定を上書きできる。

/var/hoge/config/appsettings.admin.json