我是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文件/环境,那就太好了。
如果有人能给我指出正确的方向我将不胜感激,如果我错过了一些简单的东西,我也不会感到惊讶.
谢谢
1条答案
按热度按时间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.如果转换失败,只需检查日志并调试即可。如果您在日志中看到类似于以下内容的行,它应该可以正常工作:
有关详细信息,请参见-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文件。