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

如何将API密钥等敏感信息排除在GitHub外,同时完成应用部署?

问题解答

1. 发布控制台应用时,Secrets会不会被一同发布?

不会。.NET的用户机密(Secrets)是存储在用户本地目录的独立文件中,不在你的项目代码文件夹内。发布应用时只会打包项目目录下的文件,因此Secrets不会被包含在发布包中,不用担心敏感信息泄露。

2. 如何将密钥部署到服务器?

根据服务器环境,推荐几种实用方案:

  • 服务器配置用户机密:
    找到服务器上运行控制台应用的用户对应目录:
    • Windows:C:\Users\<用户名>\AppData\Roaming\Microsoft\UserSecrets\<项目UserSecretsId>
    • Linux/macOS:~/.microsoft/usersecrets/<项目UserSecretsId>
      在该目录下创建secrets.json,填入你的API密钥,格式和本地Secrets一致。项目的UserSecretsId可在控制台项目的.csproj文件中找到。
  • 使用环境变量:
    在服务器系统中设置环境变量(比如OPENWEATHERMAP_KEY、GOOGLE_TTS_KEY、OPENAI_KEY),代码里通过Environment.GetEnvironmentVariable("变量名")读取即可。这种方法无需维护配置文件,适合云服务器或Linux系统。
  • 自定义生产配置文件:
    在控制台项目中添加appsettings.production.json并写入密钥信息,然后在.gitignore中排除这个文件。部署时手动将该文件上传到服务器应用目录,.NET默认会加载对应环境的配置文件。

3. 如何排除敏感信息同时展示数据结构?

可以通过以下方式让使用者清楚配置要求,同时保护你的密钥:

  • 提交示例配置文件:
    在项目中添加appsettings.example.json(或secrets.example.json),只保留密钥的键,值用占位符代替,比如:
    {
      "OpenWeatherMapApiKey": "替换为你的OpenWeatherMap密钥",
      "GoogleTtsApiKey": "替换为你的Google TTS密钥",
      "OpenAiApiKey": "替换为你的OpenAI密钥"
    }
    
    在README里说明:复制该示例文件,重命名为appsettings.json(或对应配置文件),填入自己的密钥。
  • 在文档中列出需要配置的密钥项:
    如果用用户机密,在README里告知使用者需要设置的密钥名称,示例命令:
    dotnet user-secrets set "OpenWeatherMapApiKey" "你的密钥"
    dotnet user-secrets set "GoogleTtsApiKey" "你的密钥"
    dotnet user-secrets set "OpenAiApiKey" "你的密钥"
    
  • 完善.gitignore规则:
    确保.gitignore中包含所有可能存放敏感信息的文件,比如appsettings.json、*.user等,避免误提交。

另外,你的类库项目只负责共享类、Web应用仅读取文件路径的拆分逻辑很合理,能进一步降低敏感信息暴露的风险。

内容的提问来源于stack exchange,提问作者Wim ten Brink

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:35:25