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

Azure DevOps多项目本地共享secret.json问题求助

问题根源与解决方案

问题根源确认

是的,多个项目共享同一个<UserSecretsId>就是导致secret.json同步变更的核心原因。

.NET的用户秘密(User Secrets)机制通过项目文件里的<UserSecretsId>关联本地存储的配置文件:

  • 所有使用同一ID的项目,都会读写系统路径下的同一个secrets.json文件(Windows路径:%APPDATA%\Microsoft\UserSecrets\<UserSecretsId>\secrets.json;macOS/Linux路径:~/.microsoft/usersecrets/<UserSecretsId>/secrets.json)。
  • 这也是重新克隆项目、将正常项目与问题项目共存后仍出现同步的原因——只要项目文件中的ID一致,就会指向同一个本地文件。

解决步骤

  1. 为每个项目生成唯一的<UserSecretsId>

    • 用.NET CLI自动生成:在项目根目录执行
      dotnet user-secrets init --force
      
      该命令会自动生成新的唯一GUID,替换项目.csproj文件中原有的<UserSecretsId>节点。
    • 手动修改:直接编辑项目的.csproj文件,将<UserSecretsId>的值改为唯一字符串(比如项目名+随机GUID,确保每个项目取值不同)。
  2. 迁移现有秘密(按需操作)

    • 找到旧ID对应的secrets.json文件,复制其中的配置内容。
    • 执行dotnet user-secrets open命令打开新生成的秘密文件,粘贴内容并根据当前项目需求调整配置项。
  3. 清理旧的共享秘密文件(可选)

    • 若不再需要旧ID对应的秘密存储,可手动删除系统路径下对应的文件夹,避免后续误关联。

关于Staging服务器部署的担忧

本地用户秘密不会自动部署到服务器,它仅用于本地开发环境,不会被包含在编译输出或部署包中。

服务器环境的配置需通过以下方式确保独立:

  • Azure App Service的「应用设置」:在门户中为每个应用单独配置参数。
  • Azure Key Vault:为每个项目创建独立密钥库,或在同一密钥库中用不同密钥名称区分项目配置。

只要服务器端配置独立设置,就不会受本地用户秘密共享问题的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:32:46