如何在Azure中使用.NetCore 2.0中的WebAPI上的应用程序设置

Art*_*ino 2 c# asp.net appsettings azure asp.net-core-2.0

我有一个WebAPI,我将在Azure上发布它.我在我的应用程序上使用.Net Core 2.0.

我有一个名为appsettings.json的文件,它具有以下配置:

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
          "LogLevel": {
        "Default": "Warning"
      }
    }
  },
  "AppConfiguration": {
    "MyVariable": false,
  }
...
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,在localhost中运行,我可以从"MyVariable"获取值.

当我将它发布到Azure时,我也可以从"MyVariable"中获取值.

但是,当我转到我的Azure应用程序的应用程序设置时,我将"MyVariable"设置为"true",但我的应用程序不断获得值"false".

总而言之,我无法从appsettings.json获取Azure的价值.

我尝试在Azure上使用以下键值:

AppConfiguration:MyVariable - true

MyVariable - true

他们都没有工作.

任何人都可以帮助我如何从Azure应用程序设置中获取价值?

编辑1 我的程序类:

    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();
Run Code Online (Sandbox Code Playgroud)

Ryt*_*mis 7

设置源的顺序很重要.改变这个:

builder
    .AddEnvironmentVariables()
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
Run Code Online (Sandbox Code Playgroud)

对此:

builder
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddEnvironmentVariables();
Run Code Online (Sandbox Code Playgroud)

使Azure环境中的设置覆盖设置文件中的设置.