3

我开发了一个带有自定义健康检查的 ASP.NET Core 3.1 MVC 应用程序。它工作得很好,如下所示。

在此处输入图像描述

但是,UI 始终为空,因为 /health-api 始终返回空数组。 在此处输入图像描述

在此处输入图像描述

它位于 ASP.NET 3.1 Core 应用程序中,位于https://github.com/prawin2k/HealhCheckMVC/tree/master/HealhCheckMVC

.NET Core 版本 - 3.1 (MVC) Healthchecks 版本 - 最新操作系统:Windows Server 2016 其他:Visual Studio 2019

4

1 回答 1

4

在我的情况下,运行状况检查 UI 本身不会启动和崩溃 .net core 3.1 Web API 应用程序。

错误消息: 无法构造某些服务(验证服务描述符时出错'ServiceType:HealthChecks.UI.Core.Notifications.IHealthCheckFailureNotifier Lifetime:Scoped ImplementationType:HealthChecks.UI.Core.Notifications.WebHookFailureNotifier':无法解析服务尝试激活“HealthChecks.UI.Core.Notifications.WebHookFailureNotifier”时输入“HealthChecks.UI.Core.Data.HealthChecksDb”。)

修复:添加任何UI 存储提供程序。就我而言,我选择了 AddInMemoryStorage()

启动.cs

public void ConfigureServices(IServiceCollection services)
{
    ...
    
    services.AddHealthChecks() 
        .AddDbContextCheck<PollDbContext>() //nuget: Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore
        .AddApplicationInsightsPublisher(); //nuget: AspNetCore.HealthChecks.Publisher.ApplicationInsights

    services.AddHealthChecksUI() //nuget: AspNetCore.HealthChecks.UI
        .AddInMemoryStorage(); //nuget: AspNetCore.HealthChecks.UI.InMemory.Storage
        
    ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    
    app.UseHealthChecks("/healthcheck", new HealthCheckOptions
    {
        Predicate = _ => true,
        ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse //nuget: AspNetCore.HealthChecks.UI.Client
    });
    
    //nuget: AspNetCore.HealthChecks.UI
    app.UseHealthChecksUI(options =>
    {
        options.UIPath = "/healthchecks-ui";
        options.ApiPath = "/health-ui-api";
    });
    ...
}

应用设置.json

"HealthChecks-UI": {
    "DisableMigrations": true,
    "HealthChecks": [
        {
            "Name": "PollManager",
            "Uri": "/healthcheck"
        }
    ],
    "Webhooks": [
        {
            "Name": "",
            "Uri": "",
            "Payload": "",
            "RestoredPayload": ""
        }
    ],
    "EvaluationTimeOnSeconds": 10,
    "MinimumSecondsBetweenFailureNotifications": 60,
    "MaximumExecutionHistoriesPerEndpoint": 15
}
于 2020-07-24T15:30:14.953 回答