私は現在、アプリの設定でAPIのURLを保存しようとしています。ただし、configuration.Propertiesは空のようです。設定の仕方がわかりません。 program.cs:
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
//string url = builder.Configuration.Properties["APIURL"].ToString();
foreach (var prop in builder.Configuration.Properties)
Console.WriteLine($"{prop.Key} : {prop.Value}" );
//builder.Services.AddSingleton<Service>(new Service(url));
builder.RootComponents.Add<App>("app");
await builder.Build().RunAsync();
}
現在、IConfiguration
を使用できます。
appsettings.json:
{
"Services": {
"apiURL": "https://localhost:11111/"
}
}
。
using Microsoft.Extensions.Configuration;
public class APIHelper
{
private string apiURL;
public APIHelper(IConfiguration config)
{
apiURL = config.GetSection("Services")["apiURL"];
//Other Stuff
}
}
設定クラスを作成します。
public class Settings
{
public string ApiUrl { get; set; }
}
wwwrootフォルダーにsettings.jsonを作成します。
{
"ApiUrl": "http://myapiurlhere"
}
.razorコンポーネントでは、次のように読みます。
@inject HttpClient Http
...
@code {
private string WebApuUrl = "";
protected override async Task OnInitializedAsync()
{
var response = await Http.GetFromJsonAsync<Settings>("settings.json");
WebApuUrl = response.ApiUrl;
}
}
(wwwrootのappsettings.json)でもできます:
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
var url = builder.Configuration.GetValue<string>("ApiConfig:Url");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(url) });
}
}