我的解决方案中有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
我尝试了以下步骤:
但是它没有替换web.config中的终结点变量地址,尽管它已xml转换成功并且在日志中,替换令牌已替换了该变量的令牌。
此后,我在阅读此answer之后修改了下图所示的发布任务。
有什么方法可以替换端点地址中的变量值吗?或者我有什么遗漏吗?
答案 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步骤,以在替换令牌步骤之前和之后检查文件内容。
注意
请注意,我的最后建议是将其保留在日志中的原因。如果您有敏感数据,请稍后将其撤消或从文件中删除以进行测试。
答案 1 :(得分: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)"/>
以前,“匹配”应用于合同,但未能从库变量转换值。