Blazor WASM(ASP.NET Core托管)读取appsettings.json配置值为空问题
问题描述
尝试从appsettings.json读取配置值时,FileStorage配置始终返回NULL,相关代码如下:
appsettings.json
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "FileStorage": "D:\\Temp\\Storage" }
Razor页面代码
@page "/" @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <h3>Configuration</h3> <h4>File Storage: @Configuration["FileStorage"]</h4>
Program.cs代码
var builder = WebApplication.CreateBuilder(args); builder.Configuration.SetBasePath(Directory.GetCurrentDirectory()); builder.Configuration.AddJsonFile( "appsettings.json", optional: true, reloadOnChange: true);
问题原因及解决办法
- 重复加载配置导致路径异常:
WebApplication.CreateBuilder(args)已经默认自动加载了appsettings.json等配置文件,手动调用SetBasePath和AddJsonFile可能因运行时工作目录与预期不符,加载了不存在的配置文件,进而读取不到值。 - 缺少Razor Pages服务注册:如果Program.cs中未添加Razor Pages服务,DI容器无法正确解析
IConfiguration的注入,也会导致读取失败。
具体修复步骤:
- 简化Program.cs配置逻辑,移除手动配置加载代码,保留默认机制并添加Razor Pages服务:
var builder = WebApplication.CreateBuilder(args); // 注册Razor Pages服务,确保IConfiguration可被正常注入 builder.Services.AddRazorPages(); var app = builder.Build(); // 配置HTTP请求管道 if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run();
检查appsettings.json文件属性:右键该文件 → 属性 → 将「复制到输出目录」设置为如果较新则复制或始终复制,确保程序运行时能在输出目录找到配置文件。
验证读取逻辑:Razor页面中的
@inject IConfiguration Configuration和@Configuration["FileStorage"]写法是正确的,完成上述修复后即可正常读取配置值。
内容的提问来源于stack exchange,提问作者Alfredo Martinez
相关产品推荐
相关产品推荐

