【发布时间】:2020-11-05 21:15:11
【问题描述】:
我有一个 React SPA,其中 .Net Core WebAPI 后端部署到 Azure 应用服务。在本地开发时,我使用 appsettings.json 文件来配置 WebAPI 后端。我正在为一个名为“XyzApi”的外部 api 设置一个键/值对。
{
"XyzApi": "https://somedomain/api"
}
在 WebAPI 控制器中,我使用配置提供程序访问此配置设置。
var xyzApiUrl = Configuration["XyzApi"]
这很好用。
当我将应用程序部署到应用程序服务时,我需要更改“XyzApi”的值以使用新值覆盖 appsettings.json 中的值。我在 Azure 的应用服务应用程序设置部分添加了一个名为“XyzApi”的键/值对。
在应用程序设置的应用服务文档中,它说该值将作为名为“APPSETTING_XyzApi”的环境变量公开给配置。它还说它应该覆盖 appsettings.json 文件中键“XyzApi”的值。
当应用启动时。问题是“XyzApi”的值仍设置为 appsettings.json 文件中的值。它没有被覆盖。正如预期的那样,“APPSETTING_XyzApi”现在有了一个新的键/值对。
为什么 Azure 应用服务没有使用 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();
});
}
【问题讨论】:
-
嗨,@Mike Murphy,您愿意接受我的回复作为其他人参考的答案吗?
标签: azure azure-web-app-service azure-configuration