C# 根据标记运行某些.NET核心运行状况检查

C# 根据标记运行某些.NET核心运行状况检查,c#,.net,.net-core,health-check,C#,.net,.net Core,Health Check,我在我的应用程序中添加了.NET核心运行状况检查 我想使用标签只运行一个检查,如果它是一个基本检查或更详细的检查所有检查 这就是我得到的: services.AddHealthChecks() .AddCheck("Check1", () => HealthCheckResult.Healthy("Service Is Healthy!"), tags: new[] { "basic"

我在我的应用程序中添加了.NET核心运行状况检查

我想使用标签只运行一个检查,如果它是一个基本检查或更详细的检查所有检查

这就是我得到的:

services.AddHealthChecks()
                        .AddCheck("Check1", () => HealthCheckResult.Healthy("Service Is Healthy!"), tags: new[] { "basic", "full" })
                        .AddCheck<CheckLogsAreHealthy>("Check2", tags: new[] { "full" })
                        .AddCheck<CheckLvcConnectionStatus>("Check3", tags: new[] { "full" })


但事实似乎并非如此。如何运行每个检查?

这可能是一个迟到的答案,我希望您已经找到了解决方案,但是调用
AddHealthChecks
不会自动为您的健康检查创建URL,它只是注册它们

要为健康检查创建端点,必须调用
IEndpointRouteBuilder
上的
MapHealthChecks
方法。此方法还接受带有
谓词
字段的选项,您可以在该字段中传递谓词以过滤要执行的运行状况检查。例如,以下示例根据标记筛选已注册的健康检查,并创建一个
/health/basic
和一个
/health/full
端点,每个执行健康检查的端点的标记中都有
basic
full

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
   app.UseEndpoints(endpoints =>
   {      
      endpoints.MapHealthChecks("/health/basic", new Microsoft.AspNetCore.Diagnostics.HealthChecks.HealthCheckOptions
      {
         Predicate = registration => registration.Tags.Contains("basic")
      });
      
      endpoints.MapHealthChecks("/health/full", new Microsoft.AspNetCore.Diagnostics.HealthChecks.HealthCheckOptions
      {
         Predicate = registration => registration.Tags.Contains("full")
      });
   });
...
}
http://localhost:4000/api/health?tags=full
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
   app.UseEndpoints(endpoints =>
   {      
      endpoints.MapHealthChecks("/health/basic", new Microsoft.AspNetCore.Diagnostics.HealthChecks.HealthCheckOptions
      {
         Predicate = registration => registration.Tags.Contains("basic")
      });
      
      endpoints.MapHealthChecks("/health/full", new Microsoft.AspNetCore.Diagnostics.HealthChecks.HealthCheckOptions
      {
         Predicate = registration => registration.Tags.Contains("full")
      });
   });
...
}