You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让ContinuousIntegration.exe访问Azure Key Vault中的Kentico连接字符串

核心根因
  • Azure App Service的Key Vault配置注入、内置AKV引用机制,仅对托管在App Service运行时的Web应用生效,独立运行的ContinuousIntegration.exe作为Console程序,不会触发这套运行时的配置加载流程
  • 当前Web应用的web.config中connectionStrings节点无实际配置值,所有连接串值由Azure运行时动态注入,导致独立程序启动时加载不到合法的CMSConnectionString,两类报错本质是同一个问题:Kentico数据库初始化流程失败,连带后续CI命令执行中断
可行配置方案

方案1:为CI工具配置直连AKV的独立配置(长期推荐)

该方案完全不改动线上Web应用的现有配置,也不需要长期在本地存储数据库明文连接串,适配长期CI同步流程:

  • 先确认你在AKV中存储的CMSConnectionString对应的密钥名称、AKV实例的完整访问URI
  • 打开和ContinuousIntegration.exe同目录下的ContinuousIntegration.exe.config文件,因为该工具是从Kentico Xperience v13站点的bin\Tools目录下拷贝出来的,本身已经内置了Azure Key Vault配置构建器的依赖,不需要额外安装程序集
  • 在配置文件中新增AKV配置构建器节点,让独立程序启动时直接从AKV拉取配置值,示例配置如下:
    <configuration>
      <!-- 保留配置文件中原有的所有configSections节点,仅追加缺失的配置构建器节点声明 -->
      <configBuilders>
        <builders>
          <add name="AzureKeyVault"
               vaultName="你的AKV实例名称"
               type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure"
               vaultUri="https://你的AKV实例名称.vault.azure.net/" />
        </builders>
      </configBuilders>
      <!-- 给connectionStrings节点绑定配置构建器,不需要手动填入连接串值 -->
      <connectionStrings configBuilders="AzureKeyVault">
        <add name="CMSConnectionString" connectionString="" />
      </connectionStrings>
    </configuration>
    
  • 权限适配操作:
    • 本地运行CI exe时,需使用本地登录的Azure身份(比如Azure CLI登录的账号、Visual Studio内置登录的Azure账号),给该身份分配对应AKV的密钥读取权限,不需要给线上站点的系统分配额外权限
    • 在Azure内部VM/容器上运行CI exe时,给该运行环境分配系统托管身份,再给这个托管身份分配AKV的密钥读取权限即可,不需要本地交互登录
    • 额外注意:确保运行CI exe的网络环境(本地/VM)的公网出口IP,已经加入对应Azure SQL数据库的防火墙白名单,否则就算拉到正确的连接串,依然会触发数据库连接失败的报错

方案2:临时手动填入连接串(适合单次临时同步)

如果只是临时完成一次CI数据同步,不需要长期保留AKV直连能力,可以直接在ContinuousIntegration.exe.config的connectionStrings节点,手动填入和AKV中存储的完全一致的CMSConnectionString明文值

  • 该操作仅对本地/同步服务器上的CI exe生效,不会改动线上Web应用的配置
  • 同步完成后建议删除配置中存储的明文连接串,避免数据库凭据泄露

方案3:复用App Service运行时配置

如果不想单独给CI exe做AKV适配,也可以将CI exe放到线上站点的App Service文件系统目录下,通过Kudu控制台直接运行该工具

  • 这种场景下CI exe会复用App Service运行时的配置加载逻辑,自动读取已经注入的CMSConnectionString
  • 注意该方法仅适合临时排查时使用,长期同步流程不推荐依赖Kudu控制台操作
常见报错排查
  • 检查AKV的网络访问规则,有没有开启防火墙限制导致配置构建器无法连接到AKV拉取密钥值
  • 检查运行CI exe的身份权限,确认对应用户/托管身份真的能读取AKV中CMSConnectionString对应的密钥值,不要直接套用线上站点托管身份的权限规则给本地运行场景
  • 检查ContinuousIntegration.exe所在目录的Kentico核心程序集(CMS.DataEngine.dll等)的版本,必须和线上站点的版本完全一致,版本不匹配会直接触发应用初始化错误
  • 运行CI exe时只要确保对配置文件、CI工作目录有读写权限即可,不需要额外的系统提权操作

内容的提问来源于stack exchange,提问作者jpvantuyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 22:54:03