You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用IConfiguration.Get<T>方法返回结果始终为null的问题排查

问题原因

IConfiguration的Get<T>方法本身不会自动识别并反序列化存储为字符串的JSON内容。你当前将TestClass整体序列化为JSON字符串赋值给Section1:section2键,配置系统只会将该值识别为普通字符串,无法映射到TestClass类的属性结构,因此返回null。

解决方法

方法1:手动反序列化JSON字符串

如果你需要保留当前的JSON字符串存储逻辑,直接修改取值方法,先读取字符串再手动反序列化即可:

public T GetTestAsync(IConfiguration configuration)
{
    var section = configuration.GetSection("Section1:section2");
    string jsonContent = section.Value;
    return JsonSerializer.Deserialize<T>(jsonContent);
}

方法2:使用.NET配置规范的扁平化键结构(更推荐)

.NET配置系统本身是基于扁平化键值对设计的,你可以直接将类的属性拆分为分层键存储,无需手动做JSON序列化,原有Get<T>逻辑即可正常工作:
修改构造配置字典的代码:

var config = new Dictionary<string, string>()
{
    { "Section1:section2:Name", "hello" }
    // 类的其他属性按照 {层级前缀:属性名} 的规则补充即可
};

这种方式符合.NET配置的原生设计,支持从appsettings.json、环境变量、命令行参数等多种配置源自动绑定,无需额外处理序列化逻辑。

内容的提问来源于stack exchange,提问作者user17217634

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:01