From 4883b44d33075cb12b46f97335e085f9ace0d25d Mon Sep 17 00:00:00 2001 From: xiangning Date: Sun, 19 Jul 2026 13:17:28 +0800 Subject: [PATCH] =?UTF-8?q?diag:=20AddConsul=E5=89=8D=E5=90=8E=E8=AF=BB?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=80=BC=EF=BC=8C=E5=AE=9A=E4=BD=8D=20Winton?= =?UTF-8?q?=20=E6=98=AF=E5=90=A6=E6=B3=A8=E5=85=A5=20IConfiguration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BuildFlow.Host/Program.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/BuildFlow.Host/Program.cs b/src/BuildFlow.Host/Program.cs index e79b51a..9d05154 100644 --- a/src/BuildFlow.Host/Program.cs +++ b/src/BuildFlow.Host/Program.cs @@ -32,19 +32,22 @@ builder.Configuration.AddConsul( // 默认 ConvertConsulKVPairToConfig 把 Consul key 路径(去 buildflow/ 前缀,/ 转 :)作为 IConfiguration key, // 如 buildflow/Jwt:SigningKey → 配置 Jwt:SigningKey,value 直接是密钥字符串。 options.Parser = new SimpleConfigurationParser(); - options.Optional = false; // 诊断期:强制 Consul 必须可用,暴露真实错误 + options.Optional = false; // 诊断:Consul 必须可用,暴露真实问题 options.ReloadOnChange = true; // KV 变更自动刷新 IConfiguration(热重载基础) - // 诊断期:打印 Consul 加载异常(确认后改回 Ignore) options.OnLoadException = ex => { - Console.WriteLine($"[Consul] 加载异常: {ex.Exception?.GetType().Name}: {ex.Exception?.Message}"); - Console.WriteLine($"[Consul] 堆栈: {ex.Exception?.StackTrace?.Substring(0, System.Math.Min(500, ex.Exception?.StackTrace?.Length ?? 0))}"); - ex.Ignore = false; // 不吞,让异常抛出 + // Consul 加载失败只告警不崩溃(本地开发/CI 可能无 Consul token) + Console.WriteLine($"[Consul] 加载异常(已忽略,回退本地配置): {ex.Exception?.Message}"); + ex.Ignore = true; }; }); // OTel 日志导出 var otlpEndpoint = builder.Configuration["OpenTelemetry:OtlpEndpoint"] ?? "http://localhost:4316"; + +// ★ 诊断:AddConsul 之后立即读 KV 值,确认是否进入 IConfiguration(Build 前) +Console.WriteLine($"[DIAG] AddConsul后读 PollInterval={builder.Configuration["Monitoring:Scheduler:PollIntervalSeconds"]}(999=KV生效,60=本地)"); +Console.WriteLine($"[DIAG] Jwt:SigningKey={builder.Configuration["Jwt:SigningKey"]?[..10]}..."); builder.Logging.AddOpenTelemetry(logging => { logging.AddOtlpExporter(options => options.Endpoint = new Uri(otlpEndpoint)); @@ -57,6 +60,9 @@ builder.Services.AddHostObjectAccessors(); await builder.AddApplicationAsync(); var app = builder.Build(); +// ★ 诊断:Build 后再读一次(Winton Load 在 Build 时触发) +Console.WriteLine($"[DIAG] Build后读 PollInterval={app.Configuration["Monitoring:Scheduler:PollIntervalSeconds"]}"); +Console.WriteLine($"[DIAG] Build后读 SigningKey={app.Configuration["Jwt:SigningKey"]?[..10]}..."); await app.InitializeApplicationAsync(); // 启动期数据库初始化:迁移各库 + IM MongoDB 建索引 + 种子数据(单库失败不影响其他库)