基于Blazor WebAssembly的C#获取Netlify环境变量值方案
获取Netlify环境变量(含C#实现方案)
一、使用Netlify CLI的env命令获取环境变量
- 先确保你已安装Netlify CLI并完成登录:
npm install -g netlify-cli netlify login - 获取单个环境变量:
# 切换到站点目录后执行 netlify env:get API_KEY # 或者指定站点ID(无需切换目录) netlify env:get API_KEY --site YOUR_SITE_ID - 列出所有环境变量:
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
相关产品推荐
相关产品推荐

