using Atomx.Admin.Client.Services; using Atomx.Admin.Client.Utils; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; var builder = WebAssemblyHostBuilder.CreateDefault(args); // 注册本地存储(单例) builder.Services.AddBlazoredLocalStorageAsSingleton(); // 授权/身份相关 builder.Services.AddAuthorizationCore(); builder.Services.AddCascadingAuthenticationState(); builder.Services.AddSingleton(); // 权限 & 本地化 builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); // Token provider(WASM) builder.Services.AddScoped(); // 注册用于自动附带 token & 刷新的 DelegatingHandler builder.Services.AddScoped(); // 注册一个命名 HttpClient(供应用中所有 API 请求使用),并将 AuthHeaderHandler 加入管道 var apiBase = builder.Configuration["WebApi:ServerUrl"] ?? builder.HostEnvironment.BaseAddress; builder.Services.AddHttpClient("ApiClient", client => { client.BaseAddress = new Uri(apiBase); }) .AddHttpMessageHandler(); // 为方便注入未带名字的 HttpClient(AuthHeaderHandler 内部 CreateClient() 使用默认工厂), // 也注册默认 HttpClient 的 BaseAddress builder.Services.AddScoped(sp => sp.GetRequiredService().CreateClient("ApiClient")); // 在 WASM DI 中注册 HttpService,使用上面注入的 HttpClient 实例 builder.Services.AddScoped(sp => new HttpService(sp.GetRequiredService())); builder.Services.AddAntDesign(); await builder.Build().RunAsync();