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

如何将GitHub Secret注入C#应用环境变量?Azure部署遇异常

问题分析

你当前的配置存在核心误区:GitHub Workflow中定义的env仅作用于Workflow运行的临时虚拟机环境,不会自动同步到Azure Web App的运行环境。你的C#代码读取的是Azure Web App运行时的环境变量,而非GitHub构建过程中的变量,因此无法获取到MYSECRET的值。

解决方案

有两种可靠的方式将GitHub Secret传递到Azure Web App并让程序读取:

方案1:直接在Azure Portal配置应用设置

  • 登录Azure Portal,找到你的Web App(PhillipsEngineerTelirite)
  • 进入配置 > 应用设置页面
  • 点击新建应用设置,添加键为MYSECRET,值为你的GitHub Secret对应的内容(ddd)
  • 保存设置,Web App会自动重启

此时你的C#代码可以通过Environment.GetEnvironmentVariable("MYSECRET", EnvironmentVariableTarget.Process)读取到该值(Azure Web App的应用设置会作为进程级环境变量注入)。

方案2:通过GitHub Workflow部署时传入环境变量

修改你的publish作业中的azure/webapps-deploy步骤,添加app-settings-json参数,将GitHub Secret作为应用设置传入:

- name: Deploy to Azure Web App
  id: deploy-to-web-app
  uses: azure/webapps-deploy@v2
  with:
    app-name: 'PhillipsEngineerTelirite'
    slot-name: Production
    publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_03557B670BF14D93BD6244DC95264F2C }}
    package: .
    app-settings-json: |
      {
        "MYSECRET": "${{ secrets.MYSECRET }}"
      }

这个配置会在部署时自动将MYSECRET添加到Azure Web App的应用设置中,无需手动在Portal操作。

代码优化建议

你的代码中OnInitialized方法会覆盖进程级的MYSECRET为ccc,这会导致从Azure读取到的真实值被覆盖,建议移除这段代码:

// 移除以下代码
protected override void OnInitialized()
{
    Environment.SetEnvironmentVariable(variable: "MYSECRET", value: "ccc");
}

同时,读取环境变量时优先使用EnvironmentVariableTarget.Process即可,因为Azure的应用设置都是注入到进程级的:

private string mySecret = Environment.GetEnvironmentVariable("MYSECRET", EnvironmentVariableTarget.Process) ?? "";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:21:30