初始化期间的 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();
}
在我的项目中,我希望在项目启动时在本地获取所有配置信息。我创建了一个注入了 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();
}