1

我的解决方案中有 10 多个项目。一个项目有配置,名称为 Variable.release.config 文件,其中包含所有应用程序变量、连接字符串和其他 web.config 的模块,需要用库中的 Azure 变量替换。这个配置文件被所有项目使用。该解决方案有 Asp.net MVC 网站,它有自己的 web.config、web.release.config。我正在尝试从 Variable.release.config 转换变量,它正在转换 web.config 中的所有内容,但端点地址的客户端部分中的端点变量的值没有被替换。

以前我使用的是 Azure App Service Deploy,下面是它的 YAML:

steps:

    - task: AzureRmWebAppDeployment@4
      displayName: 'Azure App Service Deploy: abc-tst'
      inputs:
        azureSubscription: 'ABC Technologies(XXXX-XXX-XXX-XXX-XXXXXX)'
        WebAppName: 'ABC-tst'
        deployToSlotOrASE: true
        ResourceGroupName: 'abc-tst'
        SlotName: T2
        packageForLinux: '$(System.DefaultWorkingDirectory)/$(Release.DefinitionName)/drop/ABC.Frontend.zip'
        enableXmlTransform: true
        enableXmlVariableSubstitution: true

它没有替换端点中的变量。我遇到了几篇文章说只有端点不能用 xml 转换替换我需要使用 3rd 方工具来传输替换令牌

我尝试了以下步骤:

  1. 文件转换
  2. 替换令牌
  3. Azure 应用服务部署

但是它没有替换 web.config 中的端点变量地址,尽管它的 xml 转换成功并且在日志中替换令牌已经替换了该变量的令牌。

之后,我在阅读此答案后修改了我的发布任务,如下图所示。

有什么方法可以替换端点地址中的变量值还是我遗漏了什么?

Azure 发布管道任务

4

2 回答 2

0

我通过提取文件然后对其进行转换并再次将其压缩到同一位置来尝试了许多天蓝色任务。但没有任何效果。我删除了所有任务,只使用以下 YAML 保留了一项“Azure App Service Deploy”任务:

在此处输入图像描述

我修改了我的 we.release.config 端点,如下所示:

<endpoint address="#{variable1}"  binding="basicHttpBinding" bindingConfiguration="TransPortCertificateBinding" contract="Contract1" name="Service1"
                xdt:Transform="SetAttributes" xdt:Locator="Match(address)"/>

以前,Match 应用于未能从库变量转换值的合同。

于 2020-08-14T14:37:14.090 回答
0

您确定您已按应有的方式进行了所有配置吗?

我在发布管道中尝试了这个替换令牌,一切都很好。你确定你有正确配置的traget文件吗?

你在日志中有这样的输出吗?

2020-05-28T07:11:02.8850410Z replacing tokens in: D:\a\r1\a\repos\stackoverflow\38-endpoint-replace\Web.config
2020-05-28T07:11:02.9045428Z   1 tokens replaced out of 1
2020-05-28T07:11:02.9048164Z replaced 1 tokens out of 1 in 1 file(s) in 0.079 seconds.

请尝试添加此类 powershell 步骤以检查替换令牌步骤前后的文件内容。

在此处输入图像描述

笔记

请注意,我最后的建议是我将其保存在日志中的原因。如果您有敏感数据,请出于测试目的将其撤消或从文件中删除。

于 2020-05-27T13:37:53.963 回答