using System.Text.Json; using Microsoft.Extensions.Diagnostics.HealthChecks; public static class HealthCheckResponseWriter { private static readonly JsonSerializerOptions JsonOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true }; public static async Task WriteAsync(HttpContext context, HealthReport report) { context.Response.ContentType = "application/json"; var response = new { status = report.Status.ToString(), totalDurationMs = report.TotalDuration.TotalMilliseconds, checks = report.Entries.Select(e => new { name = e.Key, status = e.Value.Status.ToString(), durationMs = e.Value.Duration.TotalMilliseconds, description = e.Value.Description, data = e.Value.Data.Count > 0 ? e.Value.Data : null, exception = e.Value.Exception?.Message }) }; await context.Response.WriteAsync(JsonSerializer.Serialize(response, JsonOptions)); } }