我有一个使用.Net核心WebAPI后端部署到的SPA。在本地开发时,我使用appsettings.json文件配置WebAPI后端。我正在为一个名为"XyzApi“的外部api设置一个键/值对。
{
"XyzApi": "https://somedomain/api"
}
在WebAPI控制器中,我使用配置提供程序访问此配置设置。
var xyzApiUrl = Configuration["XyzApi"]
这个很好用。
当我将应用程序部署到app时,我需要更改"XyzApi“的值,以便用一个新的值覆盖来自appsettings.json的值。我在Azure的部分中添加了一个名为"XyzApi“的键/值对。
在中,它表示该值将作为一个名为"APPSETTING_XyzApi“的环境变量公开给配置。它还说,它应该为键"XyzApi“覆盖来自XyzApi文件的值。
当应用程序启动时。问题是"XyzApi“的值仍然被设置为来自appsettings.json文件的值。它没有被覆盖。正如预期的那样,现在有一个新的键/值对用于"APPSETTING_XyzApi“。
为什么AppService没有用在Azure appsettings.json应用程序设置中配置的新值覆盖AppService文件中的键/值对。
以下是配置配置提供程序的代码。
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();
});
}
发布于 2020-11-05 17:02:30
您所做的所有步骤都是正确的,除了门户中应用程序的名称。您可以在配置中添加"APPSETTING_XyzApi"
,这与"XyzApi"
在appsettings.json
中的不同。只有当名称合适时,它才会覆盖。
下面是一个示例:
1.我在本地的"myKey": "value1"
中设置了,并在索引页上显示了这个值。
在发布后,我将value
123123
**:**设置为。
3.值覆盖:
https://stackoverflow.com/questions/64705398
复制