.NET Core 6中HealthChecksUI Webhook不工作问题求助
.NET Core 6 HealthChecksUI Webhook 不工作排查与修复
一、先确认依赖包有没有装全
- 得确保项目里装了
AspNetCore.HealthChecks.UI、AspNetCore.HealthChecks.UI.Client,关键还要装AspNetCore.HealthChecks.UI.Webhook包——这个很容易漏掉,没装的话Webhook根本不会触发。
二、修正配置里的问题
你的现有配置有两个核心问题,改完就能解决大部分情况:
- 模板变量用错了:
[[LIVENESS]]不是HealthChecksUI的内置变量,换成官方支持的:[[CHECK_NAME]]:对应健康检查的名称(比如你配置里的"My Health Checks")[[STATUS]]:当前健康状态(Healthy/Unhealthy)[[FAILURE_REASONS]]:失败时的具体描述
- 显式开启两种状态触发:默认可能只在失败时触发,要加
OnFailure和OnRecovery参数,明确异常和恢复都发Webhook。
修正后的配置示例:
"HealthChecksUI": { "HealthChecks": [ { "Name": "My Health Checks", "Uri": "/health" } ], "Webhooks": [ { "Name": "healthcheckapi", "Uri": "https://localhost:44365/WeatherForecast", "Payload": "{ \"message\": \"Webhook report for [[CHECK_NAME]]: [[STATUS]] - Description: [[FAILURE_REASONS]]\"}", "RestorePayload": "{ \"message\": \"[[CHECK_NAME]] has recovered to [[STATUS]]\"}", "OnFailure": true, "OnRecovery": true } ], "EvaluationTimeInSeconds": 5, "MinimumSecondsBetweenFailureNotifications": 10 // 可选,避免短时间内重复发通知 }
三、检查Program.cs的注册代码
要确保在Program.cs里正确启用Webhook功能,少了AddWebhookNotification()不行:
builder.Services.AddHealthChecksUI() .AddInMemoryStorage() .AddWebhookNotification(); // 必须加这行启用Webhook通知 app.UseHealthChecks("/health", new HealthCheckOptions { Predicate = _ => true, ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse }); app.UseHealthChecksUI(options => { options.UIPath = "/healthchecks-ui"; });
四、验证接收端点是否正常
- 确认
https://localhost:44365/WeatherForecast支持POST请求(Webhook默认用POST方法) - 可以临时修改端点代码,把收到的Payload打出来,确认是否有请求进来:
[HttpPost] public IActionResult WeatherForecast([FromBody] dynamic payload) { Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(payload)); return Ok(); }
五、日志查错
开启HealthChecksUI的日志,看有没有Webhook相关的错误信息:
"Logging": { "LogLevel": { "HealthChecks.UI": "Information", "HealthChecks.UI.Notifications": "Debug" } }
内容的提问来源于stack exchange,提问作者OMM
相关产品推荐
相关产品推荐

