ASP.NET Core怎么实现健康检查 HealthChecks配置与使用方法-C#.Net教程

asp.net core健康检查是监控应用状态的轻量机制,需配置检查项、暴露端点并按场景定制;支持就绪/存活区分、自定义检查及k8s/prometheus集成。

ASP.NET Core 的健康检查(Health Checks)是监控应用运行状态的轻量级机制,能快速识别服务是否就绪、是否存活、依赖是否可用。它不复杂但容易忽略细节,关键是配置好检查项、暴露端点、并结合实际场景定制逻辑。

启用健康检查中间件

在 Program.cs 中注册健康检查服务并添加中间件:

  • 调用 AddHealthChecks() 注册服务,可链式添加各种检查器(如数据库、HTTP、磁盘等)
  • 调用 MapHealthChecks() 暴露 HTTP 端点,支持自定义路径、响应格式和授权

示例:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks()
    .AddSqlServer(connectionString: "Server=...;Database=Test;...")
    .AddRedis("localhost:6379", name: "redis-cache")
    .AddProcessHostedServiceCheck(); // 自定义检查:确认后台服务是否启动

var app = builder.Build();
app.MapHealthChecks("/health", new HealthCheckOptions
{
    ResponseWriter = async (ctx, report) =>
    {
        ctx.Response.ContentType = "application/json";
        await JsonSerializer.SerializeAsync(ctx.Response.Body, report, new JsonSerializerOptions { WriteIndented = true });
    }
});

定义自定义健康检查

当内置检查器不满足需求时(比如检查第三方 API 可用性、文件写入权限、配置有效性),可实现 IHealthCheck 接口:

  • 重写 CheckHealthAsync 方法,执行检测逻辑
  • 返回 HealthCheckResult.Healthy()、.Unhealthy() 或 .Degraded()
  • 可传入描述、异常、数据字典(用于输出诊断信息)

例如检查某个配置项是否存在:

public class ConfigHealthCheck : IHealthCheck
{
    private readonly IConfiguration _config;
    public ConfigHealthCheck(IConfiguration config) => _config = config;

    public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
    {
        var value = _config["ExternalApi:BaseUrl"];
        return Task.FromResult(string.IsNullOrWhiteSpace(value)
            ? HealthCheckResult.Unhealthy("External API base URL is missing.")
            : HealthCheckResult.Healthy());
    }
}

然后注册:services.AddHealthChecks().AddCheck(“config-check”);

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » ASP.NET Core怎么实现健康检查 HealthChecks配置与使用方法-C#.Net教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3998373+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3998373+
  • 本周更新: 0+
  • 最后更新: 2026-03-16