【问题标题】:Environment variables not visible in configuration provider环境变量在配置提供程序中不可见
【发布时间】:2019-06-20 08:50:54
【问题描述】:

我正在尝试为我的 Azure Devops Entity Framework 数据库迁移任务设置数据库连接字符串。

我的想法不是在 git 上发布带有数据库连接的配置,而是使用环境变量来使用生产设置(数据库连接字符串)覆盖应用程序配置。

开始迁移时,应用程序不读取设置的环境变量,而是默认使用开发连接字符串。

例如连接字符串条目是:ConnectionStrings.Database

我已经这样设置了:set ASPNETCORE_ConnectionStrings__Database=test

我不工作。 当我在 Visual Studio 调试属性中设置连接字符串时,它可以正常工作。 正如 MS 文档所建议的那样,我在应用程序启动中包含了环境变量。

VS调试器设置变量和控制台设置变量有什么区别?

感谢您的帮助。

更新: Visual Studio 将环境变量添加到launchSettings.json

【问题讨论】:

  • 我认为您不需要ASPNETCOREConnectionStrings__Database 应该可以。
  • 该部分由配置提供者修剪,我已经在调试器中对其进行了测试,无论我通过控制台设置什么 EnvConfigurationProvider 在列表中都没有实体。是否有任何环境配置文件?喜欢当前的用户、机器或应用上下文?
  • 部署应用时如何设置环境变量?你在 Linux 上吗?
  • 我们使用 Azure 应用服务,连接字符串和其他设置在那里设置(通过 Web UI),在 Ubuntu 上运行。 Devops 任务正在运行 Visual Studio 2017 windows 代理。
  • 这可能是区分大小写的问题。你试过CONNECTIONSTRINGS__DATABASE吗?

标签: c# asp.net-core .net-core azure-devops


【解决方案1】:

伙计们,这是一个大脑打嗝的案例...... 我没有将环境变量提供程序推送到分支,因此 Azure Devops 任务没有读取它们:

       WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddEnvironmentVariables(prefix: "ASPNETCORE_");
            })
            .UseStartup<Startup>()
            .UseWebRoot("wwwroot");

这有点尴尬:-(
但这可能对将来的某人有所帮助。
感谢您的 cmets 8ytan。

【讨论】:

  • 感谢您在此处分享您的解决方案,您可以接受它作为答案,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档此线程,谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-05-03
  • 2021-06-29
  • 1970-01-01
  • 2021-06-14
  • 2021-07-11
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多