【问题标题】:Azure replace token for Service model endpoint for Asp.net MVC in pipeline release taskAzure 替换管道发布任务中 Asp.net MVC 的服务模型端点的令牌
【发布时间】:2020-05-27 12:41:09
【问题描述】:

我的解决方案中有 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 方工具来传输Replace Token

我尝试了以下步骤:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    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步骤来检查替换令牌步骤前后的文件内容。

    注意

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

    【讨论】:

    • 这些步骤是构建管道的吗?我需要在发布时使用变量替换/替换。
    • @KalpeshBhadra 对不起,你是对的。我现在检查了发布管道,没有理由它不能工作。请检查我的编辑。
    • 是的,我得到这样的日志,上面写着 2 个令牌被替换了 3 个。它显示哪个令牌没有被替换。
    • 这里是警告。 2020-05-26T17:37:14.9560115Z 替换令牌:C:\Agent1_work\r3\a\ABC\files\Content\C_C\Agent1_work\686\s\DotNetSystem\ABC.CRM.MVC\Frontend\obj\Release \Package\PackageTmp\Web.config 2020-05-26T17:37:14.9578263Z ##[警告] 未找到变量:SvcRefAccDetailsByRefV2.AAgetAccountDetailsViaReferenceV2Port 2020-05-26T17:37:14.9592671Z 替换了 3 个令牌中的 2 个
    • 这仅仅意味着没有同名的变量。你确定你的管道中有它吗?
    【解决方案2】:

    我通过提取文件然后对其进行转换并再次将其压缩到同一位置来尝试了许多天蓝色任务。但没有任何效果。我删除了所有任务,只使用以下 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 应用于未能从库变量转换值的合约。

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多