如何在 .Net Core 2.0 的 Web API 上使用 Azure 中的应用程序设置
How to use Application Settings in Azure on a WebAPI in .NetCore 2.0
我有一个要在 Azure 上发布的 WebAPI。我在我的应用程序上使用 .Net Core 2.0。
我有一个名为 appsettings.json 的文件,它具有以下配置:
{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
},
"AppConfiguration": {
"MyVariable": false,
}
...
}
在我的应用程序中,运行 在本地主机中,我可以从 "MyVariable" 中获取值。
当我发布到Azure时,我也可以从"MyVariable"中获取值。
但是,当我转到我的 Azure 应用程序的应用程序设置时,我将 "MyVariable" 设置为 "true",但我的应用程序一直在获取值 "false".
总而言之,我无法从 Azure 获取值,只能从 appsettings.json。
我尝试在 Azure 上使用以下键值:
AppConfiguration:MyVariable - true
MyVariable - true
None 他们工作了。
任何人都可以帮助我如何从 Azure 应用程序设置中获取值吗?
编辑 1
我的程序 class:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(
(WebHostBuilderContext context, IConfigurationBuilder builder) =>
{
builder.Sources.Clear();
builder
.AddEnvironmentVariables()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.UseApplicationInsights()
.UseStartup<Startup>()
.Build();
设置源的顺序很重要。改变这个:
builder
.AddEnvironmentVariables()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
对此:
builder
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
让 Azure 环境中的设置覆盖设置文件中的设置。
在 Net Core 2.o 或更高版本中,顺序很重要。如果你检查 here 你可以看到订单:
A typical sequence of configuration providers is:
- Files (appsettings.json, appsettings..json, where
is the app's current hosting environment)
- User secrets (Secret Manager) (in the Development environment only)
- Environment variables
- Command-line arguments
因此,您必须将 .AddEnvironmentVariables()
更改为:
builder
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
我有一个要在 Azure 上发布的 WebAPI。我在我的应用程序上使用 .Net Core 2.0。
我有一个名为 appsettings.json 的文件,它具有以下配置:
{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
},
"AppConfiguration": {
"MyVariable": false,
}
...
}
在我的应用程序中,运行 在本地主机中,我可以从 "MyVariable" 中获取值。
当我发布到Azure时,我也可以从"MyVariable"中获取值。
但是,当我转到我的 Azure 应用程序的应用程序设置时,我将 "MyVariable" 设置为 "true",但我的应用程序一直在获取值 "false".
总而言之,我无法从 Azure 获取值,只能从 appsettings.json。
我尝试在 Azure 上使用以下键值:
AppConfiguration:MyVariable - true
MyVariable - true
None 他们工作了。
任何人都可以帮助我如何从 Azure 应用程序设置中获取值吗?
编辑 1 我的程序 class:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(
(WebHostBuilderContext context, IConfigurationBuilder builder) =>
{
builder.Sources.Clear();
builder
.AddEnvironmentVariables()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.UseApplicationInsights()
.UseStartup<Startup>()
.Build();
设置源的顺序很重要。改变这个:
builder
.AddEnvironmentVariables()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
对此:
builder
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
让 Azure 环境中的设置覆盖设置文件中的设置。
在 Net Core 2.o 或更高版本中,顺序很重要。如果你检查 here 你可以看到订单:
A typical sequence of configuration providers is:
- Files (appsettings.json, appsettings..json, where is the app's current hosting environment)
- User secrets (Secret Manager) (in the Development environment only)
- Environment variables
- Command-line arguments
因此,您必须将 .AddEnvironmentVariables()
更改为:
builder
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();