fix(config): Consul 用 SimpleConfigurationParser 解析扁平 KV

Winton 默认 JsonConfigurationParser 期望单个 key 的 value 是 JSON,
但 buildflow/ 下是 44 个扁平 key=value(每个 value 是普通字符串),
JSON 解析会失败。改用 SimpleConfigurationParser 把 value 直接作为字符串值。

配合默认 ConvertConsulKVPairToConfig:Consul key 路径去 buildflow/ 前缀后
作为 IConfiguration key(如 buildflow/Jwt:SigningKey → Jwt:SigningKey)。
This commit is contained in:
xiangning 2026-07-19 12:31:51 +08:00
parent 2f32b74687
commit e31d2d004c

View File

@ -2,6 +2,7 @@ using BuildFlow.Host;
using BuildFlow.Host.Configuration; using BuildFlow.Host.Configuration;
using OpenTelemetry.Logs; using OpenTelemetry.Logs;
using Winton.Extensions.Configuration.Consul; using Winton.Extensions.Configuration.Consul;
using Winton.Extensions.Configuration.Consul.Parsers;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
@ -27,6 +28,10 @@ builder.Configuration.AddConsul(
if (!string.IsNullOrEmpty(consulToken)) if (!string.IsNullOrEmpty(consulToken))
co.Token = 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.Optional = true; // Consul 不可用不阻断启动,回退本地 appsettings
options.ReloadOnChange = true; // KV 变更自动刷新 IConfiguration(热重载基础) options.ReloadOnChange = true; // KV 变更自动刷新 IConfiguration(热重载基础)
options.OnLoadException = ex => ex.Ignore = true; // 容错:Consul 抖动不影响应用 options.OnLoadException = ex => ex.Ignore = true; // 容错:Consul 抖动不影响应用