0

显然有些东西不能为空——但我想不通。我有一个自托管的 Windows 服务,并且有一个返回HealthCheckResult. 然后我有一个 .Net Core Web 应用程序,它使用HealthChecks-UI. 但是,当我启动两个应用程序时,healthcheck-ui 说我的服务处于错误状态,但同时我可以点击我的 windows 服务上的 url 并获得健康状态。

当我查看输出时,我得到 -

发送 HTTP 请求 GET {url}

收到 HTTP 响应 - 好的

HealthCheck 收集器 HostedService 抛出错误:值不能为空。(参数“来源”)

对我来说,我得到了很好的 200 响应,但有些事情失败了。理想情况下,我会HealthChecks在我的应用程序中使用我想要监控的库,但我不能,因为它是 Windows 服务。这就是为什么我选择实现自己的并且只公开一个安静的、自托管的端点。我正在使用 3.1 版本HealthChecks-UI

启动.cs

public void ConfigureServices(IServiceCollection services)
{
        services.AddHealthChecksUI()
            .AddInMemoryStorage();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting()
       .UseEndpoints(config => 
       {
           config.MapHealthChecksUI();
       });
}

应用设置.json

{
   "HealthChecks-UI": {
      "HealthChecks": [
         {
            "Name", "Windows Service", "Uri": "{myRestfulEndpoint}"
         }
      ],
      "Webhooks": []
   }
}
4

1 回答 1

0

假设您使用的是 AspNetCore.Diagnostics,请检查此 github 问题(尤其是此评论)。看起来您列出了相同的问题(如果没有HostDefaults.ContentRootKeyWebHostBuilder中进行设置,它就无法找到配置文件)。

于 2021-01-04T23:20:18.880 回答