gpt4 book ai didi

asp.net - 在 Azure 管道发布期间替换 Web.config 中的连接字符串

转载 作者:行者123 更新时间:2023-12-02 23:14:34 24 4
gpt4 key购买 nike

我有一个旧的 .NET 项目。我为其创建了一个 Azure DevOps 管道、一个构建管道和一个部署管道,我将在 2 个不同的环境中部署它。

我将一些 secret 存储在 Azure Keyvault 中,并将其余参数存储在变量组中。

一切都很完美,除了一件事:这是一个旧项目,因此我有一个 Web.config 文件,在发布期间,我想替换特定于环境的值,例如 connectionString 或 ApiKey。

我能够成功替换和更改 appSettings 下的所有内容,但无法替换 connectionString 下的 connectionString 值。

Web.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
https://go.microsoft.com/fwlink/?LinkId=301880
-->
<configuration>
<connectionStrings>
<add name="MyDB" connectionString="Standard Server=$(Server);Database=$(Database);User ID=$(User);Password=$(Password);Trusted_Connection=False;Encrypt=True;"/>
</connectionStrings>
<appSettings>
<add key="ApiKeyGeoCoding" value="$(ApiKeyGeoCoding)" />
<add key="ApiKeyTimeZone" value="$(ApiKeyTimeZone)" />
</appSettings>

部署.yml

                - task: AzureKeyVault@2
inputs:
azureSubscription: ${{ parameters.azureServiceConnection }}
KeyVaultName: ${{ parameters.keyvaultName }}
SecretsFilter: "*"
RunAsPreJob: false
- task: IISWebAppManagementOnMachineGroup@0
inputs:
IISDeploymentType: IISWebsite
ActionIISWebsite: StopWebsite
StartStopWebsiteName: ${{ parameters.IIS_SiteName }}
- task: IISWebAppDeploymentOnMachineGroup@0
inputs:
WebSiteName: ${{ parameters.IIS_SiteName }}
Package: $(Pipeline.Workspace)/**/${{ parameters.packageName }}
XmlVariableSubstitution: true

我已经尝试过使用FileTransform任务,但它没有按预期工作。

如何解决此问题并确保在我的 Web.config 文件中放置正确的值?

最佳答案

第三者Replace Tokens任务应该能够很好地完成工作。它类似于 FileTransform任务,但可高度定制并适用于任何文本文件。

在您的示例中,使用默认的替换 token token 模式前缀和后缀 #{}# 您的 Web.Config 将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="MyDB" connectionString="Standard Server=#{Server}#;Database=#{Database}#;User ID=#{User}#;Password=#{Password}#;Trusted_Connection=False;Encrypt=True;"/>
</connectionStrings>
<appSettings>
<add key="ApiKeyGeoCoding" value="#{ApiKeyGeoCoding}#" />
<add key="ApiKeyTimeZone" value="#{ApiKeyTimeZone}#" />
</appSettings>

这会将文件中的标记替换为管道中的变量值。 Replace Tokens任务有许多非常有用的选项,您还可以更改 token 模式以适应。

我建议花一些时间查看任务的每个参数。
我个人喜欢设置actionOnMissing: failed。当我在配置文件中定义 token 但忘记将变量添加到管道时,这帮助我避免了部署事物。如果没有这个,替换会将值更改为空字符串。

关于asp.net - 在 Azure 管道发布期间替换 Web.config 中的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75267121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com