如何在.NET MAUI的Blazor Server变体中注入IConfiguration?
在.NET MAUI Blazor Server中注入IConfiguration的实现方法
步骤1:准备配置文件
确保项目根目录下存在appsettings.json文件,右键该文件,设置复制到输出目录为「如果较新则复制」。示例配置内容:
{ "ApiSettings": { "BaseUrl": "https://example.com/api" }, "AppTitle": "MAUI Blazor Demo" }
步骤2:在MauiProgram.cs中构建并注册配置
修改MauiProgram.cs,构建IConfiguration实例并将其注册到服务容器:
var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); // 构建配置对象,支持多源加载 var configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() // 可选:加载环境变量配置 // 可选:添加用户机密(仅开发环境) // .AddUserSecrets<Program>() .Build(); // 将IConfiguration注册为单例服务 builder.Services.AddSingleton<IConfiguration>(configuration); // 保留Blazor相关服务配置 builder.Services.AddMauiBlazorWebView(); #if DEBUG builder.Services.AddBlazorWebViewDeveloperTools(); #endif builder.Services.AddSingleton<WeatherForecastService>(); return builder.Build();
步骤3:在Blazor组件或服务中注入使用
- Blazor组件中使用:
@inject IConfiguration Configuration <h1>@Configuration["AppTitle"]</h1> <p>API地址:@Configuration["ApiSettings:BaseUrl"]</p>
- 后台服务中使用:
public class ApiService { private readonly IConfiguration _config; public ApiService(IConfiguration config) { _config = config; } public string GetApiBaseUrl() { return _config["ApiSettings:BaseUrl"] ?? string.Empty; } }
注意事项
- 若需区分开发/生产环境,可添加
appsettings.Development.json,并通过AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true)加载对应环境配置。 - 确保配置文件路径正确,MAUI项目默认读取根目录下的配置文件。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

