在 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(可配置)这些状态帮助监控系统判断应用是否需要告警或重启。
基本上就这些。通过组合多个检查项,可以构建出适合生产环境的健康监测机制。
