gpt4 book ai didi

.net - Azure 应用服务指定每个插槽或应用服务的 Web Config

转载 作者:行者123 更新时间:2023-12-03 03:36:08 26 4
gpt4 key购买 nike

我是 Azure 新手,正在设置 Microsoft 托管,因此希望有人能够对环境特定的 Web.config 文件有所了解。

我继承了一个 .NET Web 应用程序,每个环境都有不同的 Web.config 文件。

例如:

  • Web.config
  • Web.Test.config
  • Web.Stage.config
  • Web.Prod.config

所有配置文件都包含特定于环境的配置。

以前,该应用程序是使用 Azure 的“应用程序服务”托管的,我们希望这样做。

我知道您可以使用“应用程序服务”配置下的“应用程序设置”来覆盖 Web.config 中的值,但是,有没有办法简单地切换出用于每个环境的 Web.config 文件?

我想象理想情况下,不会有单独的 Web.config 文件,并且所有值都将通过“应用程序设置”设置,从而无需将环境特定值推送到存储库,但如果知道如何使用 Azure 应用服务切换 Web.config 文件/环境。

如果有人能指出我正确的方向,我将不胜感激。如果我在这里遗漏了一些简单的东西,我不会感到惊讶。

谢谢

最佳答案

好的,最终解决了这个问题,将在这里发布一些解决方案,以防其他人尝试做类似的事情。

首先,这两种解决方案都使用 Azure 部署管道(可能还有其他部署方法可以以类似的方式工作,目前我们将重点关注 Azure 发布管道)

<强>1。使用“XML变量替换”

其工作方式是,当发布管道将应用程序部署到 Azure 应用服务时,Web.config 文件变量将被环境特定 Web.config 文件中定义的变量覆盖。

例如,假设我们要部署到stage,步骤大致如下:

  1. 创建一个名为 Web.Stage.config 的转换配置文件

  2. 确保部署阶段的名称是环境的名称,例如在本例中,“舞台”

  3. 在“Azure 应用服务部署”任务中,确保“XML转换”被选中。

  4. 部署后,Web.Stage.config 中定义的变量将替换 Web.config 中的内容并使用特定于环境的 Web.config 部署应用程序。

  5. 如果转换失败,只需检查日志并进行调试即可。它如果您在日志中看到与此类似的行,则应该可以工作:

    Transform  file: 'D:\a\_temp\temp_web_package_6283924812067563\Content\D_C\a\1\s\XXX.Backend\src\XXX.Web.Cms\obj\Release\Package\PackageTmp\Web.Stage.config'
    Executing Insert (transform line 4, 60).

有关更多信息,请参阅 - https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/transforms-variable-substitution

<强>2。破解部署后脚本

与大多数 IT 任务一样,做事的方式也有正确和错误之分,该解决方案远不如“XML 变量替换”那么干净,但仍然有效。我们将再次使用 Azure Release Pipelines,这次指定“内联脚本”类型的“部署后操作”。

然后,添加内联脚本来删除 Web.config 并将环境特定的 Web.config 移动到 Web.config 的原始位置

我不建议采用这种方法,应始终使用“XML 变量替换”,因为这是一种更简洁的方法。

简而言之,使用 Azure 发布管道和“XML 变量替换”来使用特定于环境的 Web.config 文件。

关于.net - Azure 应用服务指定每个插槽或应用服务的 Web Config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73285550/

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