Azure App Service应用程序设置不会覆盖appsettings.json值

时间:2020-11-05 21:15:11

标签: azure azure-web-app-service azure-configuration

我有一个带有.Net Core WebAPI后端的React SPA,该后端已部署到Azure App Service。在本地开发时,我使用appsettings.json文件配置WebAPI后端。我正在为名为“ XyzApi”的外部api设置键/值对。

{
  "XyzApi": "https://somedomain/api"
}

在WebAPI控制器中,我使用配置提供程序访问此配置设置。

var xyzApiUrl = Configuration["XyzApi"]

这很好。

将应用程序部署到App Service时,我需要更改“ XyzApi”的值,以使用新值覆盖appsettings.json中的值。我在Azure的“应用服务应用程序设置”部分中添加了名为“ XyzApi”的键/值对。

在“应用程序设置的App Service”文档中,该值将作为名称为“ APPSETTING_XyzApi”的环境变量作为环境变量公开给配置。它还说应该覆盖来自appsettings.json文件的键“ XyzApi”的值。

应用启动时。问题是“ XyzApi”的值仍设置为appsettings.json文件中的值。它不会被覆盖。正如预期的那样,“ APPSETTING_XyzApi”现在有了一个新的键/值对。

Azure App Service为什么不使用在Azure AppService应用程序设置中配置的新值覆盖appsettings.json文件中的键/值对。

这是配置配置提供程序的代码。

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                var env = hostingContext.HostingEnvironment;

                config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json",
                        optional: true, reloadOnChange: true)
                    .AddEnvironmentVariables(); 
            });
}

1 个答案:

答案 0 :(得分:0)

您执行的所有步骤都是正确的,但门户中应用程序设置的名称除外。您在配置中添加了"APPSETTING_XyzApi",这与"XyzApi"中的appsettings.json不同。仅当名称合适时,它才会覆盖。

这里是一个例子:

1。我在本地的appsettings.json中设置了"myKey": "value1",并在索引页上显示了该值。

enter image description here

![enter image description here

2。发布后,我将value设置为123123 ![enter image description here

3。值覆盖:

enter image description here

相关问题