From e31d2d004c4b3716f54e5134e4d79c459a722f79 Mon Sep 17 00:00:00 2001 From: xiangning Date: Sun, 19 Jul 2026 12:31:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(config):=20Consul=20=E7=94=A8=20SimpleConfi?= =?UTF-8?q?gurationParser=20=E8=A7=A3=E6=9E=90=E6=89=81=E5=B9=B3=20KV?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Winton 默认 JsonConfigurationParser 期望单个 key 的 value 是 JSON, 但 buildflow/ 下是 44 个扁平 key=value(每个 value 是普通字符串), JSON 解析会失败。改用 SimpleConfigurationParser 把 value 直接作为字符串值。 配合默认 ConvertConsulKVPairToConfig:Consul key 路径去 buildflow/ 前缀后 作为 IConfiguration key(如 buildflow/Jwt:SigningKey → Jwt:SigningKey)。 --- src/BuildFlow.Host/Program.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/BuildFlow.Host/Program.cs b/src/BuildFlow.Host/Program.cs index 6e7f7b9..af62dc8 100644 --- a/src/BuildFlow.Host/Program.cs +++ b/src/BuildFlow.Host/Program.cs @@ -2,6 +2,7 @@ using BuildFlow.Host; using BuildFlow.Host.Configuration; using OpenTelemetry.Logs; using Winton.Extensions.Configuration.Consul; +using Winton.Extensions.Configuration.Consul.Parsers; var builder = WebApplication.CreateBuilder(args); @@ -27,6 +28,10 @@ builder.Configuration.AddConsul( if (!string.IsNullOrEmpty(consulToken)) co.Token = consulToken; }; + // 用 SimpleConfigurationParser:每个 Consul KV 的 value 作为字符串值(非 JSON)。 + // 默认 ConvertConsulKVPairToConfig 把 Consul key 路径(去 buildflow/ 前缀,/ 转 :)作为 IConfiguration key, + // 如 buildflow/Jwt:SigningKey → 配置 Jwt:SigningKey,value 直接是密钥字符串。 + options.Parser = new SimpleConfigurationParser(); options.Optional = true; // Consul 不可用不阻断启动,回退本地 appsettings options.ReloadOnChange = true; // KV 变更自动刷新 IConfiguration(热重载基础) options.OnLoadException = ex => ex.Ignore = true; // 容错:Consul 抖动不影响应用