|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Hosting;
namespace Aspire;
internal static class HealthChecksExtensions
{
/// <summary>
/// Adds a HealthCheckRegistration if one hasn't already been added to the builder.
/// </summary>
public static void TryAddHealthCheck(this IHostApplicationBuilder builder, HealthCheckRegistration healthCheckRegistration)
{
builder.TryAddHealthCheck(healthCheckRegistration.Name, hcBuilder => hcBuilder.Add(healthCheckRegistration));
}
/// <summary>
/// Invokes the <paramref name="addHealthCheck"/> action if the given <paramref name="name"/> hasn't already been added to the builder.
/// </summary>
public static void TryAddHealthCheck(this IHostApplicationBuilder builder, string name, Action<IHealthChecksBuilder> addHealthCheck)
{
var healthCheckKey = $"Aspire.HealthChecks.{name}";
if (!builder.Properties.ContainsKey(healthCheckKey))
{
builder.Properties[healthCheckKey] = true;
addHealthCheck(builder.Services.AddHealthChecks());
}
}
}
|