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(); data.Add("ContentRootPath", _env.ContentRootPath); data.Add("WebRootPath", _env.WebRootPath); data.Add("ApplicationName", _env.ApplicationName); data.Add("EnvironmentName", _env.EnvironmentName); data.Add("CheckFile", file); return Task.FromResult(File.Exists(file) ? HealthCheckResult.Healthy("Ok", data) : HealthCheckResult.Unhealthy($"Missing file {file}", null, data)); } } }