如何在 .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:

  1. Files (appsettings.json, appsettings..json, where is the app's current hosting environment)
  2. User secrets (Secret Manager) (in the Development environment only)
  3. Environment variables
  4. Command-line arguments

因此,您必须将 .AddEnvironmentVariables() 更改为:

 builder
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
 .AddEnvironmentVariables();