普段、.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から設定値を取得する方法のメモ書きでした
わからないことだらけできついですね
また詰まったりしたところがあれば追記したり別記事を書いたりします
コメント
自分も.NET6での開発を始めているところで、調べている最中にこちらのサイトでJSON形式に変わったことを知りました。
ありがとうございます。
以前はApp.config内にJSON形式で記述していたこともあり、
割とすんなりと納得できました。
ありがとうございます。
お役に立てたようでなによりです!