Asp.Net 核心 - appsettings.json 字典 <string, Value> 属性 映射在 Azure 环境中不起作用

Asp.Net Core - appsettings.json Dictionary<string, Value> property mapping is not working in Azure environment

我在 SO 中遇到了几个类似的问题,但在 Azure 环境中都没有按预期工作。

我有以下appsettings.json配置

  {
"Luis": {
    "SubDomain": {
        "AreaOne": {
            "AppIds": {
                "Us": "12345678",
                "India": "567890"
            },
            "APIKey": "xyz123",
            "HostName": "www.example.com"
        },
          "AreaTwo": {
            "AppIds": {
                "Us": "12345679",
                "India": "887890"
            },
            "APIKey": "xyz456",
            "HostName": "www.exampleareatwo.com"
        }
    }
}
}

我们正在尝试将其绑定到以下对象

public class Luis
{
    public Dictionary<string,SubDomain> SubDomainLuis { get; set; }
}
public class SubDomain
{
    
    public Dictionary<string, string> AppIds { get; set; }
    public string APIKey { get; set; }
    public string HostName { get; set; }
}

我们在本地环境中得到了正确的结果,但在托管 azure 应用程序服务后,它显示为 null 值。

这是构造函数代码:

LuisConfig.SubDomainLuis 在 azure 环境中总是返回空值。

var LuisConfig = new Luis();
ConfigurationBinder.Bind(configuration.GetSection(nameof(Luis)), LuisConfig);

启动class:

var config = new Luis();
        Configuration.Bind("Luis", config);
        services.AddSingleton(config);

该目录始终在复制设置文件。

这些是我已经提到的问题。

正如@ChristianHeld 在评论中提到的,该问题与环境有关appsettings.json。我们忘记在 azure 配置中添加环境变量详细信息。所以这就是它总是指向 appsettings.json 而不是 appsettings.Local.jsonappsettings.Dev.json.

的原因

ASPNETCORE_ENVIRONMENT 是您可以添加为 UAT、DEV、Prod 等的环境键和值

Azure 应用服务 -> 配置