Blazor WebAssembly中为何无法用JSON文件覆盖IConfiguration配置?
问题原因及解决方法
核心问题
你的JSON配置里,MeIsAString是嵌套在AppConfiguration节点下的,但直接调用Configuration.Get<AppConfiguration>()时,配置系统会从根配置节点匹配AppConfiguration类的属性——而根节点并没有MeIsAString这个属性,所以只能使用类里定义的默认值"Hello World!"。
解决方法
方法一:读取时指定配置节
修改读取配置的代码,先定位到AppConfiguration配置节,再绑定到实体类:
var configSection = Configuration.GetSection("AppConfiguration"); var s = configSection.Get<AppConfiguration>().MeIsAString; // 此时s的值为"different string"
方法二:通过依赖注入绑定配置(推荐)
在Program.cs中将配置节绑定到服务容器,后续通过IOptions<T>注入使用:
- 在
Program.cs中添加配置绑定逻辑:
// 执行完AddJsonStream后添加 builder.Services.Configure<AppConfiguration>(builder.Configuration.GetSection("AppConfiguration"));
- 在组件或服务中注入并使用:
@inject IOptions<AppConfiguration> AppConfig // 使用配置 var s = AppConfig.Value.MeIsAString;
额外注意点
你的JSON文件存在语法错误:最后一个键值对末尾的逗号("different string",)和外层对象闭合前的逗号会导致JSON解析失败,建议删除多余逗号,修正后的JSON如下:
{ "AppConfiguration": { "MeIsAString": "different string" } }
内容的提问来源于stack exchange,提问作者john.doe
相关产品推荐
相关产品推荐

