C# 中的健康检查 API 是如何定义的?

来源:这里教程网 时间:2026-02-21 17:27:11 作者:

在 C# 中,健康检查 API 是通过 Microsoft.Extensions.Diagnostics.HealthChecks 命名空间提供的。它允许开发者定义应用的健康状态,并通过一个标准接口对外暴露。核心是实现

IHealthCheck
接口,并在依赖注入容器中注册健康检查服务。

定义健康检查的基本方式

要自定义一个健康检查,需要创建一个类实现

IHealthCheck
接口,重写
CheckHealthAsync
方法:

public class MyCustomHealthCheck : IHealthCheck
{
    public async Task<HealthCheckResult> CheckHealthAsync(
        HealthCheckContext context, 
        CancellationToken cancellationToken = default)
    {
        // 模拟检查逻辑
        var isHealthy = await SomeService.IsAvailable(cancellationToken);
<pre class='brush:php;toolbar:false;'>    if (isHealthy)
    {
        return HealthCheckResult.Healthy("服务运行正常");
    }
    return HealthCheckResult.Unhealthy("服务不可用");
}

}

在程序中注册和启用健康检查

Program.cs
Startup.cs
中添加健康检查服务并配置中间件:

调用
services.AddHealthChecks()
注册健康检查服务
使用
.AddCheck<t>()</t>
添加自定义检查,或使用内置检查(如数据库、内存、网络等)
在请求管道中使用
app.UseHealthChecks("/health")
启用端点

示例:

var builder = WebApplication.CreateBuilder(args);
<p>builder.Services.AddHealthChecks()
.AddCheck<MyCustomHealthCheck>("custom_check")
.AddSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));</p><p>var app = builder.Build();</p><div class="aritcle_card flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/ai/799" title="IngestAI"><img
                                                                                src="https://www.herecours.com/d/file/efpub/2026/21-21/20260221135528179242.jpg" alt="IngestAI"  onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/ai/799" title="IngestAI">IngestAI</a>
                                                                        <p>帮助人们将知识库转变为聊天机器人助手</p>
                                                                </div>
                                                                <a href="/ai/799" title="IngestAI" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </div><p>app.UseHealthChecks("/health");</p><p>app.Run();</p>

健康检查的返回状态说明

健康检查结果分为三种状态:

Healthy:所有检查通过,HTTP 返回 200 Unhealthy:关键服务异常,HTTP 返回 503 Degraded:部分非关键服务有问题,但仍可工作,HTTP 返回 200(可配置)

这些状态帮助监控系统判断应用是否需要告警或重启。

基本上就这些。通过组合多个检查项,可以构建出适合生产环境的健康监测机制。

相关推荐