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

如何在.NET 6函数类中从local.settings.json获取数组配置值?

解决Azure Functions中获取local.settings.json数组配置的问题

问题根源

local.settings.json的Values节点是键值对集合,所有配置值都会被解析为字符串类型,直接在Values里放置JSON数组/对象会被当作普通字符串处理,因此无法用GetValue<string[]>正确获取。

解决方案

方案一:简单字符串数组(分号分隔)

如果只是需要多个邮箱字符串,修改配置为分号分隔的单一字符串:

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet",
        "toAddress": "abs@gmail.com;xblade@hotmail.com;hornet2@honda.com"
    }
}

代码中拆分字符串为数组:

string toAddressStr = _config.GetValue<string>("toAddress");
string[] toAddresses = toAddressStr.Split(';', StringSplitOptions.RemoveEmptyEntries);
log.LogInformation($"邮箱列表:{string.Join(", ", toAddresses)}");

方案二:复杂对象数组(绑定实体类)

如果需要保留对象数组结构,将配置移出Values节点,创建对应实体类进行绑定:

  1. 修改local.settings.json:
{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    },
    "ToAddresses": [
        {
            "Mail1": "abs@gmail.com",
            "Mail2": "xblade@hotmail.com",
            "Mail3": "hornet2@honda.com"
        }
    ]
}
  1. 创建实体类:
public class MailAddressGroup
{
    public string Mail1 { get; set; }
    public string Mail2 { get; set; }
    public string Mail3 { get; set; }
}
  1. 在函数中获取配置:
var toAddressGroups = _config.GetSection("ToAddresses").Get<List<MailAddressGroup>>();
foreach (var group in toAddressGroups)
{
    log.LogInformation($"Mail1: {group.Mail1}, Mail2: {group.Mail2}, Mail3: {group.Mail3}");
}

部署注意事项

部署到Azure时,local.settings.json中非Values节点的配置不会自动同步到应用设置。如果使用方案二,需要将复杂配置放到appsettings.json文件中,并确保该文件被包含在部署包内;或者将配置转换为键值对格式(如ToAddresses:0:Mail1=abs@gmail.com)添加到Azure应用程序设置中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:55:14