访问.NET中的HealthReport对象

问题描述 投票:0回答:1

我正在努力实施健康检查操作。我想包含 HealthReport 对象以便将其存储在我的 MongoDB 中。 但是,我无法弄清楚如何以任何方式检索 HealthReport 的实例。并且没有我可以利用的 MongoDB 的 NuGet 存储包

我尝试实例化一个新的 HealthReport 对象,但缺少一些关键变量。另外,我似乎无法从 Program.cs 解析任何实例到我的类。我在任何地方都找不到 HealthReport 对象

.net asp.net-core asp.net-web-api
1个回答
0
投票

您可以注入

HealthCheckService
并手动获取报告进行存储。

private readonly HealthCheckService _healthCheckService;

public HealthController(HealthCheckService healthCheckService( {
   _healthCheckService = healthCheckService;
}

然后可以调用CheckHealth方法生成HealthReport;

var healthReport = await _healthCheckService.CheckHealthAsync();

然后以您想要的方式存储您的

HealthReport

您可能希望将

HealthReport
存储为 json,在这种情况下您需要一些自定义 json 处理;

var jsonString = JsonConvert.SerializeObject(healthReport, settings: new JsonSerializerSettings
{
    Converters = new List<JsonConverter>
    {
        new MethodBaseConverter()
    }
});
/// <summary>
/// Exception have a TargetSite property which is a methodBase.
/// This is useless to serialize, and can cause huge strings and circular references - so this converter always returns null on that part.
/// </summary>
public class MethodBaseConverter : JsonConverter<MethodBase?>
{
    public override void WriteJson(JsonWriter writer, MethodBase? value, JsonSerializer serializer)
    {
        // We always return null so we don't object cycle.
        serializer.Serialize(writer, null);
    }

    public override MethodBase? ReadJson(JsonReader reader, Type objectType, MethodBase? existingValue, bool hasExistingValue,
        JsonSerializer serializer)
    {
        return null;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.