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));
}
}
}