【C#】.NET6で設定値を使う。appsettings.jsonから値をとってくる方法

記事内に広告が含まれています。

普段、.NET Frameworkの方で開発をしているのですが、少し時間があり、今後は.NET6の仕事もあるかなということで軽く調べたりしています

その中で、設定値の取得方法がよくわからなくていろいろと調べて試したのでその内容をここにメモしておきます

間違っていたり、こういう方法の方がいいよなどありましたら、コメントなどいただけるとありがたいです

スポンサーリンク

今回調べて記事にしたそもそもの原因

.NETCoreにはWeb.configがない

.NET FrameworkではWeb.config(App.config)に設定値を記入していました

ただ、.NET6(.NET Core)でプロジェクトを作成してみたところ、Web.configがない!

調べたところ、appsettings.jsonがその代わりとなるそう

XMLからJSONに代わるのはなかなか想定外

.NET6でStartup.csがなくなった

appsettings.jsonの使い方を調べてみたのですが、.NET5までの使い方の情報ばかりで使えない…

というのも、.NET6でStartup.csというファイルがなくなり、Program.csに集約されたそう

Startup.csがないので、調べて出てくるものも使えない

メガウソ
メガウソ

こりゃ困った…

ということで、調べたものを参考にとりあえず書いてみました

スポンサーリンク

.NET6でappsettings.jsonから値を取得

実際に書いてみたコード

{
  "DBSettings":{
    "DbTimeout":500,
    "DbConnectionString":"DB接続文字列"
  },
  "Logging":{
    "LogLevel":{
      "Default":"Information",
      "Microsoft.AspNetCore":"Warning"
    }
  },
  "AllowedHosts":"*"
}

↑appsettings.json

// 設定値ファイルの取得
IConfiguration config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddEnvironmentVariables()
    .Build();
// DB初期化処理呼び出し
Common.DbInitialize(config);

↑Program.cs

public static class Common
{
    public static void DbInitialize(IConfiguration configuration)
    {
        // 設定値の取得
      var dbCommandTimer = configuration.GetValue<int>("DBSettings:DbTimeout");
        var dbConnectString = configuration["DBSettings:DbConnectionString"];
        ...

  }
}

↑Common.cs(自前で追加したファイル)

上記の処理でappsettings.jsonから設定値がとれました

DbInitializeメソッド内で設定値を取得しています

appsettings.jsonで設定している値が数値型の場合は、GetValue<int>()で、文字列型の場合は[]で指定できます

appsettings.json内の階層に合わせて「:」で区切って指定してください

まとめ

.NET6でappsettings.jsonから設定値を取得する方法のメモ書きでした

わからないことだらけできついですね

また詰まったりしたところがあれば追記したり別記事を書いたりします

コメント

  1. てつや より:

    自分も.NET6での開発を始めているところで、調べている最中にこちらのサイトでJSON形式に変わったことを知りました。
    ありがとうございます。

    以前はApp.config内にJSON形式で記述していたこともあり、
    割とすんなりと納得できました。