Azure Function 从IConfiguration读取Provider配置返回null问题求助
问题原因
你之前的写法存在两处核心错误:
GetValue<string,string>是无效重载,IConfiguration的GetValue方法仅接受1个泛型参数,用于指定返回值类型,错误的重载调用自然无法返回正确结果。AzureAppConfigurationProvider:Data是复合结构节点,直接用GetValue<object>无法读取结构化内容,要么直接访问下一级子键,要么通过绑定实体类读取。
解决方案
方案1:直接读取单个配置项
按照父节点:子节点:配置键的层级格式写全键路径即可读取:
var clientId = _configuration.GetValue<string>("AzureAppConfigurationProvider:Data:clientId"); var clientSecret = _configuration.GetValue<string>("AzureAppConfigurationProvider:Data:clientSecret"); var tenantId = _configuration.GetValue<string>("AzureAppConfigurationProvider:Data:tenantId");
方案2:绑定到实体类(推荐)
先定义对应配置结构的实体类:
public class GraphAuthConfig { public string ClientId { get; set; } public string ClientSecret { get; set; } public string TenantId { get; set; } }
再一次性绑定整个节点:
// 写法1:用Bind方法 var graphConfig = new GraphAuthConfig(); _configuration.GetSection("AzureAppConfigurationProvider:Data").Bind(graphConfig); // 写法2:用Get方法更简洁 var graphConfig = _configuration.GetSection("AzureAppConfigurationProvider:Data").Get<GraphAuthConfig>();
排查校验点
如果按照上述写法仍返回空,请检查启动配置:
确认Function启动类中已正确添加Azure App Configuration配置源,示例如下:
var host = new HostBuilder() .ConfigureAppConfiguration((context, config) => { var builtConfig = config.Build(); // 此处从环境变量/本地配置读取App Configuration连接字符串 var appConfigConnStr = builtConfig["AzureAppConfigurationConnectionString"]; config.AddAzureAppConfiguration(appConfigConnStr); }) .ConfigureFunctionsWorkerDefaults() .Build();
同时确认Azure App Configuration资源中存储的键名层级完全匹配,无拼写错误。
内容的提问来源于stack exchange,提问作者Code Ratchet
相关产品推荐
相关产品推荐

