【问题标题】:Azure Environmental Variables how to override web.config value?Azure 环境变量如何覆盖 web.config 值?
【发布时间】:2020-06-03 18:25:42
【问题描述】:

我正在 .net 核心 web api 上进行 dotnet 发布,它生成了一个 web.config,如下所示。这对开发人员来说很好,因为 RayGunKey 是正确的值,但是当我将它放在临时环境中时,它仍然具有“SOME-KEY-HERE”值!即使我在 staging web api 的 Configuration -> Application Settings 下创建了 RayGunKey(具有不同的值)。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\MyApi.dll" stdoutLogEnabled="false" hostingModel="InProcess" stdoutLogFile=".\logs\stdout">
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="44392" />
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
          <environmentVariable name="RayGunKey" value="SOME-KEY-HERE" />
          <environmentVariable name="COMPLUS_ForceENC" value="1" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

我没有配置好启动文件吗?我怎样才能让它拉出暂存 RagGunKey 而不是使用在发布命令中创建的那个?

我目前正在使用以下代码,它似乎确实从 web.config 中提取了值,但正如我所说,我想从 azure 应用程序设置(环境变量)中提取它

var rayGunKey = Environment.GetEnvironmentVariable("RayGunKey");

我经常对环境变量感到困惑,尤其是在这种情况下。直接在 azure 和其他地方调用环境变量中的应用程序设置是不直观的!

在此先感谢

【问题讨论】:

    标签: azure asp.net-core environment-variables


    【解决方案1】:

    好的,所以我开始关注 launchSettings.json 并将我的环境变量添加到那里,它看起来是放置它们的好地方!然后 Visual Studio 创建 web.config 文件并使用 launchSettings.json 文件中定义的这些值填充它。这似乎很糟糕,因为现在当我执行 dotnet publish 时,该文件将包含其中定义的最后一个 web.config 值。在这种情况下,将放在暂存的开发细节。即使我尝试在暂存时创建环境变量,据说 web.config 优先,因此看不到该值。

    我使用 appsetting 来配置它,所以唯一驱动配置的是 launchSettings.json ASPNETCORE_ENVIRONMENT 值。运行应用程序时,它将查看此环境变量并在这种情况下获取适当命名的 appsettings appsettings.Staging.json

    只要我确保在我的每个环境中都设置了此项,例如到开发、登台和生产,然后它将从 appsettings..json 文件中读取配置。请参阅如何执行此操作的屏幕截图。我也不再使用 Environment.GetEnvironmentVariable 了。

    在我看来,这似乎是对曾经简单得多的事情的一次又一次的复杂化

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多