using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Diagnostics.HealthChecks; using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; namespace Bootstrap.Admin.HealthChecks { /// /// 文件健康检查类 /// public class FileHealCheck : IHealthCheck { private readonly IHostingEnvironment _env; /// /// 构造函数 /// /// public FileHealCheck(IHostingEnvironment env) { _env = env; } /// /// 异步检查方法 /// /// /// /// public Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) { var file = _env.IsDevelopment() ? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Longbow.lic") : Path.Combine(_env.ContentRootPath, "Longbow.lic"); var data = new Dictionary { { "ApplicationName", _env.ApplicationName }, { "EnvironmentName", _env.EnvironmentName }, { "ContentRootPath", _env.ContentRootPath }, { "WebRootPath", _env.WebRootPath }, { "CheckFile", file } }; return Task.FromResult(File.Exists(file) ? HealthCheckResult.Healthy("Ok", data) : HealthCheckResult.Unhealthy($"Missing file {file}", null, data)); } } }