You need to enable JavaScript to run this app. .NET Core 3.1 HealthChecks.UI 无法显示外部服务健康检查结果怎么办?
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 3.1 HealthChecks.UI 无法显示外部服务健康检查结果怎么办?

需求可行性

完全可以通过ASP.NET Core官方健康检查包实现该需求,只需仅注册你自定义的外部服务检查逻辑、不添加系统自带的应用自检测项,就不会监控自身应用的运行状态。

页面无数据原因

HealthChecksUI是独立的展示组件,不会自动读取本地注册的健康检查逻辑,你当前的代码缺少两个必要配置:

  • 没有将已注册的健康检查逻辑暴露为可访问的HTTP接口
  • 没有为HealthChecksUI配置需要拉取的健康检查接口地址

修复步骤

  1. 先确保已安装必要NuGet包:

    • AspNetCore.HealthChecks.UI
    • AspNetCore.HealthChecks.UI.Client
    • AspNetCore.HealthChecks.UI.InMemory.Storage
  2. 修正Startup.cs代码:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services
            .AddHealthChecks()
            // 仅添加自定义的外部服务检查,无需添加其他自检项
            .AddCheck<ExternalServiceHealthCheck>("External service health check");
        
        services
            .AddHealthChecksUI(setup =>
            {
                // 配置UI要拉取的健康检查端点
                setup.HealthChecks.AddHealthCheckEndpoint("外部服务健康状态", "/healthz");
            })
            .AddInMemoryStorage();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseStaticFiles();
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            // 暴露健康检查HTTP接口,返回UI兼容的响应格式
            endpoints.MapHealthChecks("/healthz", new HealthCheckOptions
            {
                ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
            });
            
            endpoints.MapHealthChecksUI(setup =>
            {
                setup.UIPath = "/HealthChecks";
            });
        });
    }
}

修改后重启应用,再次访问/HealthChecks路径即可正常展示外部服务的健康检查结果。如果需要监控多个外部服务,仅需新增多个IHealthCheck实现并注册到AddHealthChecks中即可。

内容的提问来源于stack exchange,提问作者Aleks Vujic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 23:30:02