制作网站的心得,周村有做网站广告的吗,网站宣传视频,物流网络化.NET Core中提供了开箱即用的运行状况检查#xff0c;首先#xff0c;我将在.NET Core API应用程序中执行运行状况检查#xff0c;接下来#xff0c;我们将使用DbContext集成SQL Server或数据库的运行状况检查#xff0c;最后是如何实现自定义服务的运行状况检查。在ASP.N… .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 ILoggerHealthController _logger;private readonly HealthCheckService _healthCheckService;public HealthController(ILoggerHealthController logger,HealthCheckService healthCheckService){_healthCheckService healthCheckService;_logger logger;}[HttpGet]public async TaskIActionResult 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 TaskHealthCheckResult 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().AddDbContextCheckWeatherForecastDbContext().AddCheckApiHealthCheck(ApiHealth);services.AddControllers();
}
然后运行程序访问 /health,结果如下原文作者: Anuraj 原文链接 https://dotnetthoughts.net/implementing-health-check-aspnetcore/[1]最后欢迎扫码关注我们的公众号 【全球技术精选】专注国外优秀博客的翻译和开源项目分享也可以添加QQ群 897216102References[1] https://dotnetthoughts.net/implementing-health-check-aspnetcore/: https://dotnetthoughts.net/implementing-health-check-aspnetcore/