概要
サーバ側のBlazorのProgram.csでappsettings.jsonから設定を取り出す場合、プロジェクト直下にappsettings.jsonを置いてProgram.csでbuilder.Configuration
にアクセスすることで設定の値を取り出せますが、WebAssemblyの場合は同じ方法で取り出すことができません。
ネット上にはrazorページなどで設定を取り出す方法は書いてありますが、Program.csで取り出す方法が微妙にわかりづらいです。ちゃんと仕組みを知っていれば簡単なことですが、あまり理解していないとなかなか難しいので、備忘録として残しておきます。
手順
appsettings.jsonはClientのwwwrootに配置しておきます。
Program.csで以下のように記述します。
var builder = WebAssemblyHostBuilder.CreateDefault(args);
// DI に登録される HttpClient の前に直接 HttpClient を生成して設定ファイルを読み込む
var httpClient = new HttpClient
{
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
};
using var stream = await httpClient.GetStreamAsync("appsettings.json");
// appsettings.json を builder.Configuration に追加
builder.Configuration.AddJsonStream(stream);
// builder.Configuration から設定を取得
var configuration = builder.Configuration;
await builder.Build().RunAsync();
やり方としては公式がやっている方法を使ってます。
公式: https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/configuration?view=aspnetcore-8.0
wwwrootに置いてあるappsettings.jsonをhttpClientで取得し、それをbuilder.Configuration.AddJsonStream
で追加しておくことで、builder.Configuration
から設定を取得することができるようになります。
最後に
そこまで難しいことではないんですが、理解してないと永遠にハマってしまうポイントじゃないかなと思います。詰まってしまっている方の助けになれば幸いです。