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

基于Blazor WebAssembly的C#获取Netlify环境变量值方案

获取Netlify环境变量(含C#实现方案)

一、使用Netlify CLI的env命令获取环境变量

  1. 先确保你已安装Netlify CLI并完成登录:
    npm install -g netlify-cli
    netlify login
    
  2. 获取单个环境变量:
    # 切换到站点目录后执行
    netlify env:get API_KEY
    # 或者指定站点ID(无需切换目录)
    netlify env:get API_KEY --site YOUR_SITE_ID
    
  3. 列出所有环境变量:
    netlify env:list
    

二、C#实现方案

方案1:调用Netlify CLI命令

适合本地开发场景,依赖已安装并登录的Netlify CLI:

using System.Diagnostics;

public static string FetchNetlifyEnvVar(string variableName, string siteId = null)
{
    var cliArgs = string.IsNullOrEmpty(siteId) 
        ? $"env:get {variableName}" 
        : $"env:get {variableName} --site {siteId}";

    var processStartInfo = new ProcessStartInfo
    {
        FileName = "netlify",
        Arguments = cliArgs,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        UseShellExecute = false,
        CreateNoWindow = true
    };

    using var process = Process.Start(processStartInfo);
    process.WaitForExit();

    var output = process.StandardOutput.ReadToEnd().Trim();
    var errorMsg = process.StandardError.ReadToEnd().Trim();

    if (!string.IsNullOrEmpty(errorMsg))
        throw new InvalidOperationException($"CLI执行错误: {errorMsg}");

    return output;
}

// 使用示例
try
{
    string apiKey = FetchNetlifyEnvVar("API_KEY", "你的站点ID");
    Console.WriteLine($"获取到的API Key: {apiKey}");
}
catch (Exception ex)
{
    Console.WriteLine($"获取失败: {ex.Message}");
}

方案2:调用Netlify API(无需CLI)

适合服务器或自动化场景,需要生成Netlify个人访问令牌(在账户设置的「Applications」→「Personal access tokens」中创建):

注意:如果你的API_KEY标记为敏感变量,通过API获取时Value字段会返回null,这种情况只能用CLI方案获取实际值。

using System.Net.Http.Headers;
using System.Text.Json;

public class NetlifyEnvironmentVariable
{
    public string Key { get; set; }
    public string Value { get; set; }
    public bool Sensitive { get; set; }
}

public static async Task<string> FetchNetlifyEnvVarViaApi(string variableName, string siteId, string accessToken)
{
    using var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

    var response = await httpClient.GetAsync($"https://api.netlify.com/api/v1/sites/{siteId}/env");
    response.EnsureSuccessStatusCode();

    var envVars = await JsonSerializer.DeserializeAsync<List<NetlifyEnvironmentVariable>>(
        await response.Content.ReadAsStreamAsync(),
        new JsonSerializerOptions { PropertyNameCaseInsensitive = true }
    );

    var targetVar = envVars.FirstOrDefault(v => v.Key.Equals(variableName, StringComparison.OrdinalIgnoreCase));
    if (targetVar == null)
        throw new KeyNotFoundException($"未找到环境变量: {variableName}");

    return targetVar.Value;
}

// 使用示例
try
{
    string apiKey = await FetchNetlifyEnvVarViaApi(
        "API_KEY", 
        "你的站点ID", 
        "你的Netlify个人访问令牌"
    );
    Console.WriteLine($"获取到的API Key: {apiKey}");
}
catch (Exception ex)
{
    Console.WriteLine($"获取失败: {ex.Message}");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:42:26