我有一个运行良好的ASP Core 2.2应用程序。
发布到Azure应用服务时,我想用appsettings.QA.json中的值覆盖appsettings.json中的设置。我正在努力弄清应该如何配置它。
我正在通过Microsoft.Extensions.Configuration.IConfiguration实现从appsettings中读取值,该实现注入到需要此类配置的类中。
到目前为止,我有以下内容:
Program.cs:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
})
.UseStartup<Startup>();
当应用程序在Azure中运行时,它正在从门户中获取连接字符串并使用它。但是,当我从appsettings读取值时,我总是从appsettings.json而不是appsettings.QA.json获取值。
更新
@Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
,则会得到:“ QA; Development”。似乎“开发”来自web.config,其中还设置了ASPNETCORE_ENVIRONMENT。答案 0 :(得分:2)
您不应该从appsettings
阅读环境。环境在计算机级别设置,并在启动时读取。
您有2个选择:
对于本地计算机,在launch.settings
天蓝色,在应用程序服务配置中将其设置为环境变量
ref:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2
答案 1 :(得分:0)
我现在可以正常工作了
为什么web.config中的ASPNETCORE_ENVIRONMENT?关于此here的讨论。最终,要解决此问题,我要做的就是为web.config添加转换。