コード例 #1
0
        /// <summary>
        /// Create health check report.
        /// </summary>
        /// <param name="report">Report.</param>
        public static UIHealthCheckReport CreateFrom(HealthReport report)
        {
            var uiReport = new UIHealthCheckReport(new Dictionary <string, HealthCheckReportEntry>(), report.TotalDuration)
            {
                Status = report.Status,
            };

            foreach (var item in report.Entries)
            {
                var entry = new HealthCheckReportEntry()
                {
                    Data        = item.Value.Data,
                    Description = item.Value.Description,
                    Duration    = item.Value.Duration,
                    Status      = item.Value.Status
                };

                if (item.Value.Exception != null)
                {
                    var message = item.Value.Exception
                                  .Message;

                    entry.Exception   = message;
                    entry.Description = item.Value.Description ?? message;
                }

                uiReport.Entries.Add(item.Key, entry);
            }

            return(uiReport);
        }
コード例 #2
0
        /// <summary>
        /// Add health report as json to HttpContext response.
        /// </summary>
        /// <param name="httpContext">Http context.</param>
        /// <param name="report">Report for health.</param>
        public static Task WriteHealthCheckResponseAsync(HttpContext httpContext, HealthReport report)
        {
            var response = "{}";

            if (report != null)
            {
                var settings = new JsonSerializerSettings()
                {
                    ContractResolver      = new CamelCasePropertyNamesContractResolver(),
                    NullValueHandling     = NullValueHandling.Ignore,
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                };

                settings.Converters.Add(new StringEnumConverter());

                httpContext.Response.ContentType = DefaultContentType;

                var uiReport = UIHealthCheckReport
                               .CreateFrom(report);

                response = JsonConvert.SerializeObject(uiReport, settings);
            }

            return(httpContext.Response.WriteAsync(response));
        }