如何在Azure中使用.Net Core 2.0中的Web API上的应用程序设置

问题描述 投票:2回答:2

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

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

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
          "LogLevel": {
        "Default": "Warning"
      }
    }
  },
  "AppConfiguration": {
    "MyVariable": false,
  }
...
}

在我的应用程序中,在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();
c# asp.net azure asp.net-core-2.0 appsettings
2个回答
7
投票

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

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

对此:

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

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


1
投票

在Net Core 2.o或更高版本中,订单很重要。如果你检查here,你可以看到订单:

典型的配置提供程序序列是:

  1. 文件(appsettings.json,appsettings..json,应用程序当前的托管环境在哪里)
  2. 用户机密(秘密管理员)(仅限开发环境)
  3. 环境变量
  4. 命令行参数

所以,你必须将.AddEnvironmentVariables()更改为:

 builder
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
 .AddEnvironmentVariables();
© www.soinside.com 2019 - 2024. All rights reserved.