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.json
或 appsettings.Dev.json
.
的原因
ASPNETCORE_ENVIRONMENT
是您可以添加为 UAT、DEV、Prod 等的环境键和值
Azure 应用服务 -> 配置
我在 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.json
或 appsettings.Dev.json
.
ASPNETCORE_ENVIRONMENT
是您可以添加为 UAT、DEV、Prod 等的环境键和值
Azure 应用服务 -> 配置