在.NET Core 中实现健康检查
发布日期:2021-05-09 05:28:42 浏览次数:18 分类:博客文章

本文共 3505 字,大约阅读时间需要 11 分钟。

.NET Core������������������������������������������������������������������.NET Core API���������������������������������������������������������������������DbContext������SQL Server������������������������������������������������������������������������������������������������

���ASP.NET Core���������������������

��������������������������������������������������������� Microsoft.AspNetCore.Diagnostics.HealthChecks ���

���������������ConfigureServices���������������������������������������������

public void ConfigureServices(IServiceCollection services){    services.AddHealthChecks();    services.AddControllers();}

������������Configure������������������������:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){     app.UseEndpoints(endpoints =>    {        endpoints.MapControllers();        endpoints.MapHealthChecks("/health");    });}

������������������������������������������������������ /health, ���������������������������

HealthCheckService

.NET Core���������������HealthCheckService���������������������������������������������������������������������������������

public class HealthController : ControllerBase{    private readonly ILogger
_logger; private readonly HealthCheckService _healthCheckService; public HealthController(ILogger
logger, HealthCheckService healthCheckService) { _healthCheckService = healthCheckService; _logger = logger; } [HttpGet] public async Task
Get() { var report = await _healthCheckService.CheckHealthAsync(); return report.Status == HealthStatus.Healthy ? Ok(report) : StatusCode((int)HttpStatusCode.ServiceUnavailable, report); }}

������������������������������/health���������������������������������

���������������������������������������������������������

EntityFramework Core ������������

���������������������������Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore������������������������

������������������������������������������������������������������

public void ConfigureServices(IServiceCollection services){    services.AddControllers();    services.AddApiVersioning();}

������������������������������������ /health ���������������������������

IHealthCheck

������������������������������������������������������������������������������������������ IHealthCheck ���������������������������������������������������

public class ApiHealthCheck : IHealthCheck{    private readonly IHttpClientFactory _httpClientFactory;    public ApiHealthCheck(IHttpClientFactory httpClientFactory)    {        _httpClientFactory = httpClientFactory;    }    public async Task
CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) { using (var httpClient = _httpClientFactory.CreateClient()) { var response = await httpClient.GetAsync("https://your-api-service.endpoint"); if (response.IsSuccessStatusCode) { return HealthCheckResult.Healthy($"API is running."); } return HealthCheckResult.Unhealthy("API is not running"); } }}

���������������������������

public void ConfigureServices(IServiceCollection services){    services.AddHealthChecks()        .AddDbContextCheck
() .AddCheck
("ApiHealth"); services.AddControllers();}

������������������������������ /health,���������������

������������: Anuraj

���������������

上一篇:盘点大厂的那些开源项目 - 小米科技
下一篇:在.NET Core 中使用Quartz.NET

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月24日 22时43分16秒