BootstrapAdmin/Bootstrap.Admin/HealthChecks/HealthChecksAppBuilderExten...

46 lines
1.7 KiB
C#
Raw Normal View History

using Microsoft.AspNetCore.Diagnostics.HealthChecks;
using Microsoft.AspNetCore.Http;
2019-08-13 17:30:56 +08:00
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Newtonsoft.Json;
2019-08-14 10:17:21 +08:00
using System.Threading.Tasks;
namespace Microsoft.AspNetCore.Builder
2019-08-13 13:39:18 +08:00
{
/// <summary>
/// BootstrapAdmin 健康检查扩展类
/// </summary>
public static class HealthChecksAppBuilderExtensions
{
/// <summary>
/// 启用健康检查
2019-08-13 13:39:18 +08:00
/// </summary>
/// <param name="app"></param>
/// <param name="path"></param>
2019-08-13 13:39:18 +08:00
/// <returns></returns>
public static IApplicationBuilder UseBootstrapHealthChecks(this IApplicationBuilder app, PathString path = default)
2019-08-13 13:39:18 +08:00
{
if (path == default) path = "/Healths";
app.UseHealthChecks(path, new HealthCheckOptions()
{
ResponseWriter = (context, report) =>
{
context.Response.ContentType = "application/json";
return context.Response.WriteAsync(JsonConvert.SerializeObject(new { report.Entries.Keys, Report = report }));
2019-08-13 17:30:56 +08:00
},
ResultStatusCodes =
{
[HealthStatus.Healthy] = StatusCodes.Status200OK,
[HealthStatus.Degraded] = StatusCodes.Status200OK,
[HealthStatus.Unhealthy] = StatusCodes.Status200OK
}
});
2019-08-14 10:17:21 +08:00
app.UseWhen(context => context.Request.Path == "/healths-ui", builder => builder.Run(request =>
{
request.Response.Redirect("/html/Healths-UI.html");
return Task.CompletedTask;
}));
2019-08-13 13:39:18 +08:00
return app;
}
}
}