gpt4 book ai didi

c# - 使用 ASPNETCORE_ENVIRONMENT 覆盖 Azure 上的 appsettings.json

转载 作者:行者123 更新时间:2023-12-02 23:17:59 24 4
gpt4 key购买 nike

我有一个运行良好的 ASP Core 2.2 应用程序。

  • 我有一个 appsettings.json
  • 我有一个 appsettings.QA.json
  • 我有一个 Azure 应用服务,已在门户的“配置”>“应用设置”部分添加了 ASPNETCORE_ENVIRONMENT 变量,并将值设置为“QA”。
  • 我还直接将连接字符串添加到门户的“配置”>“连接字符串”部分。

当我发布到 Azure 应用服务时,我想使用 appsettings.QA.json 中的值覆盖 appsettings.json 中的设置。我正在努力弄清楚应该如何配置它。

我正在通过 Microsoft.Extensions.Configuration.IConfiguration 实现从应用程序设置中读取值,该实现被注入(inject)到我需要此类配置的类中。

到目前为止,我有以下内容:

程序.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 中获取值。

  1. 谁能指出如何为 ASP Core 2.2 应用程序正确配置转换?
  2. 我的处理方式是否完全错误?

更新

  • 我已按照建议删除了上面的自定义代码,因为不需要它。
  • 如果我在我的 View 中输出 @Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"),我会得到:“QA;Development”。看来“开发”来自 web.config,它也设置了 ASPNETCORE_ENVIRONMENT。

最佳答案

您不应该从appsettings读取环境。环境在机器级别设置并在启动时读取。

你有两个选择:

  1. 对于本地计算机,在 launch.settings 中设置环境变量

  2. 在azure中,在应用服务配置中将其设置为环境变量

引用:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2

关于c# - 使用 ASPNETCORE_ENVIRONMENT 覆盖 Azure 上的 appsettings.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57286938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com