iis Azure应用程序服务指定每个插槽或应用程序服务的Web配置

fkvaft9z  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(169)

我是Azure的新手,正在设置Microsoft Hosting,所以希望有人能对环境特定的Web.config文件有所了解。
我继承了一个. NETWeb应用程序,它在每个环境中都有不同的Web.config文件。
例如:

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

所有配置文件都包含特定于环境的配置。
以前,该应用程序使用Azure的“应用程序服务”托管,我们也希望这样做。
我知道您可以使用“AppServices”配置下的“AppSettings”重写Web.config中的值,但是,是否有一种方法可以简单地切换出用于每个环境的Web.config文件?
我想理想情况下,不会有单独的Web.config文件,所有值都将通过“应用程序设置”设置,从而避免了将环境特定值推送到存储库的需要,但如果知道如何使用Azure应用程序服务切换出Web.config文件/环境,那就太好了。
如果有人能给我指出正确的方向我将不胜感激,如果我错过了一些简单的东西,我也不会感到惊讶.
谢谢

kmpatx3s

kmpatx3s1#

好的,最后弄清楚了这一点,将在这里发布几个解决方案,以防其他人也试图做类似的事情。
首先,这两个解决方案都使用Azure部署管道(可能还有其他部署方法以类似方式工作,现在我们将重点讨论Azure发布管道)

1.使用“XML变量替换”

其工作方式是,当发布管道将应用程序部署到Azure应用程序服务时,Web.config文件变量将被环境特定的Web.config文件中定义的变量覆盖。
例如,假设我们要部署到stage,步骤大致如下:
1.创建名为Web.Stage.config的转换配置文件
1.确保部署阶段的名称是环境的名称,在本例中为“Stage”
1.在“Azure应用服务部署”任务中,确保选中“XML转换”。
1.在部署时,Web.Stage.config中定义的变量将替换Web.config中的变量,并使用环境特定的Web. config部署应用程序。
1.如果转换失败,只需检查日志并调试即可。如果您在日志中看到类似于以下内容的行,它应该可以正常工作:

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发布管道,这次指定类型为“内联脚本”的“部署后操作”。
然后,添加一个内联脚本以删除Web.config,并将特定于环境的Web.config移动到Web.config的原始位置。
我不建议使用这种方法,而是一直使用“XML变量替换”,因为它是一种更干净的方法。
因此,简而言之,使用Azure发布管道和“XML变量替换”,以便使用特定于环境的Web.config文件。

相关问题