管道发布任务中的Asp.net MVC服务模型终结点的Azure替换令牌

时间:2020-05-27 12:41:09

标签: azure azure-devops azure-pipelines azure-pipelines-release-task

我的解决方案中有10多个项目。一个项目具有config,名称为Variable.release.config文件,该文件具有所有应用程序变量,连接字符串以及需要用Library中的Azure变量替换的其他web.config模块。此配置文件由所有项目使用。该解决方案具有Asp.net MVC网站,该网站拥有自己的web.config,web.release.config。我正在尝试从Variable.release.config进行xml转换变量,它正在转换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转换代替,我需要使用第三方工具来转移Replace Token

我尝试了以下步骤:

  1. 文件转换
  2. 替换令牌
  3. Azure App Service部署

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

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

有什么方法可以替换端点地址中的变量值吗?或者我有什么遗漏吗?

Azure release pipeline task

2 个答案:

答案 0 :(得分: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步骤,以在替换令牌步骤之前和之后检查文件内容。

enter image description here

注意

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

答案 1 :(得分:0)

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

enter image description here

我使用以下内容修改了我们的we.release.config端点:

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

以前,“匹配”应用于合同,但未能从库变量转换值。