run*_*aul 4 .net c# .net-core health-check
我将 .NET Core 运行状况检查添加到我的应用程序中。
我想使用标签仅运行一项检查(如果是基本检查)或所有检查(如果是更详细的检查)。
这就是我所拥有的:
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" })
Run Code Online (Sandbox Code Playgroud)
我认为我的网址应该如下所示:
http://localhost:4000/api/health?tags=basic
Run Code Online (Sandbox Code Playgroud)
或者
http://localhost:4000/api/health?tags=full
Run Code Online (Sandbox Code Playgroud)
但事实似乎并非如此。我如何运行每项检查?
这可能是一个迟到的答案,我希望您已经找到了解决方案,但调用AddHealthChecks不会自动为您的健康检查创建 URL,它只是注册它们。
要为健康检查创建端点,您必须调用MapHealthChecks上的方法IEndpointRouteBuilder。此方法还接受带有Predicate字段的选项,您可以在其中传递谓词来过滤要执行的运行状况检查。例如,以下示例根据标签过滤已注册的运行状况检查,并创建/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")
});
});
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2212 次 |
| 最近记录: |