初始化期间的 Blazor WASM 服务 HTTP 调用

Blazor WASM Service HTTP Call during Initialization

在我的项目中,我希望在项目启动时在本地获取所有配置信息。我创建了一个注入了 HttpClient 的 ConfigurationManager 服务。在 Blazor 组件上,存在生命周期事件,例如 OnInitializedAsync,在创建组件时调用。

protected override async Task OnInitializedAsync()
{
    await ...
}

是否有类似的服务?

Program.cs 包含以下内容

public static async Task Main(string[] args)
{
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("#app");
    builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
    builder.Services.AddScoped<StateManager>();
    await builder.Build().RunAsync();
}

使用 builder.Servuces.AddScoped<StateManager>() 添加状态管理器不会提供对服务的引用,因此无法调用非静态方法,所以我尝试了这个

public static async Task Main(string[] args)
{
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("#app");

    var http = new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) };
    builder.Services.AddScoped(sp => http);

    var state = new StateManager(http);
    builder.Services.AddScoped(sp => state);
    await state.LoadAsync();
    await builder.Build().RunAsync();
}