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

C#读取Azure App Configuration中content-type为application/json的配置问题

问题原因

Azure App Configuration的.NET配置提供程序内置了application/json内容类型的特殊解析逻辑:当你为配置键设置该内容类型时,提供程序不会将整个JSON串作为单个字符串值挂载到根键下,而是会自动把JSON对象扁平化展开为配置树的多个子节点。
以你给出的JSON结构为例,解析后会生成以下层级配置:

  • Credentials:Name = "MyNewCsv"
  • Credentials:Extension = "csv"
  • Credentials:Delimeter = "|"
    此时直接读取根键Credentials自然获取不到值,返回结果为null。当你移除application/json内容类型设置后,提供程序会将配置值作为普通字符串处理,因此_configuration["Credentials"]可以正常拿到完整JSON串,手动反序列化逻辑也能正常运行。

正确读取方案

方案1:直接绑定强类型对象(官方推荐)

不需要手动处理JSON反序列化,直接利用.NET配置的原生绑定能力读取结构化数据:

using Microsoft.Extensions.Configuration;

public FileConfiguration GetFileConfiguration(string azureKeyName)
{
    // 直接将对应配置节点绑定到强类型对象
    return _configuration.GetSection(azureKeyName).Get<FileConfiguration>();
}

该方案完全适配Azure App Configuration的自动解析特性,代码更简洁,也不需要额外引入JSON序列化依赖。

方案2:强制读取原始JSON串

如果你确实需要获取完整的JSON原始字符串,可以在注册Azure App Configuration服务时,关闭JSON内容的自动展开逻辑:

// Program.cs 中添加Azure App Configuration源时修改配置
builder.Configuration.AddAzureAppConfiguration(options =>
{
    options.Connect("你的Azure App Configuration连接字符串")
        .ConfigureKeyValuePair(kv =>
        {
            // 清空内容类型标记,所有配置值都按普通字符串处理
            kv.ContentType = string.Empty;
        });
});

修改完成后你原有手动反序列化的代码就可以正常运行,直接读取_configuration["Credentials"]就能拿到完整的JSON字符串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:27:02