Skip to content

Commit 06ee99e

Browse files
Make configuration easier
1 parent fc51161 commit 06ee99e

File tree

4 files changed

+51
-21
lines changed

4 files changed

+51
-21
lines changed

Ledgerscope.PassiveHealthChecker.Sample/Program.cs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Microsoft.Extensions.Diagnostics.HealthChecks;
2-
using Microsoft.Extensions.Http;
32
using System.Text;
43
using System.Text.Json;
54

@@ -13,18 +12,7 @@ public static void Main(string[] args)
1312

1413
// Add services to the container.
1514
builder.Services.AddRazorPages();
16-
17-
builder.Services.AddSingleton<PassiveHttpHealthCheckStatuses>();
18-
19-
builder.Services.AddHealthChecks()
20-
.AddCheck<PassiveHttpHealthCheckHealthCheck>("Passive Http Health Check");
21-
22-
// Register the handler
23-
builder.Services.AddTransient<PassiveHttpHealthCheckHandler>();
24-
25-
builder.Services.AddHttpClient();
26-
27-
builder.Services.AddTransient<IHttpMessageHandlerBuilderFilter, GlobalHttpMessageHandlerBuilderFilter>();
15+
builder.Services.ConfigurePassiveHealthChecker();
2816

2917
var app = builder.Build();
3018

PassiveHealthChecker/Ledgerscope.PassiveHealthChecker.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11+
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="10.0.5" />
1112
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="10.0.5" />
1213
<PackageReference Include="Microsoft.Extensions.Http" Version="10.0.5" />
1314
</ItemGroup>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using Microsoft.Extensions.DependencyInjection.Extensions;
3+
using Microsoft.Extensions.Diagnostics.HealthChecks;
4+
using Microsoft.Extensions.Http;
5+
6+
namespace Ledgerscope.PassiveHealthChecker
7+
{
8+
/// <summary>
9+
/// Extensions for registering the passive health checker services.
10+
/// </summary>
11+
public static class PassiveHealthCheckerServiceCollectionExtensions
12+
{
13+
private const string DefaultHealthCheckName = "Passive Http Health Check";
14+
15+
/// <summary>
16+
/// Registers the passive health checker services, global HTTP handler filter, and health check.
17+
/// </summary>
18+
public static T ConfigurePassiveHealthChecker<T>(this T services) where T : IServiceCollection
19+
{
20+
ArgumentNullException.ThrowIfNull(services);
21+
22+
services.AddHttpClient();
23+
24+
services.TryAddSingleton<PassiveHttpHealthCheckStatuses>();
25+
services.TryAddTransient<PassiveHttpHealthCheckHandler>();
26+
services.TryAddTransient<PassiveHttpHealthCheckHealthCheck>();
27+
services.TryAddEnumerable(ServiceDescriptor.Transient<IHttpMessageHandlerBuilderFilter, GlobalHttpMessageHandlerBuilderFilter>());
28+
29+
services.AddHealthChecks();
30+
services.Configure<HealthCheckServiceOptions>(options =>
31+
{
32+
if (options.Registrations.Any(registration => string.Equals(registration.Name, DefaultHealthCheckName, StringComparison.Ordinal)))
33+
{
34+
return;
35+
}
36+
37+
options.Registrations.Add(new HealthCheckRegistration(
38+
DefaultHealthCheckName,
39+
serviceProvider => serviceProvider.GetRequiredService<PassiveHttpHealthCheckHealthCheck>(),
40+
failureStatus: null,
41+
tags: null,
42+
timeout: default));
43+
});
44+
45+
return services;
46+
}
47+
}
48+
}

README.md

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,7 @@ The solution contains two projects:
4747
Add the following to your Program.cs or Startup.cs:
4848

4949
```csharp
50-
// Register the passive health check services
51-
builder.Services.AddSingleton<PassiveHttpHealthCheckStatuses>();
52-
builder.Services.AddTransient<PassiveHttpHealthCheckHandler>();
53-
builder.Services.AddTransient<IHttpMessageHandlerBuilderFilter, GlobalHttpMessageHandlerBuilderFilter>();
54-
55-
// Add the health check
56-
builder.Services.AddHealthChecks()
57-
.AddCheck<PassiveHttpHealthCheckHealthCheck>("Passive Http Health Check");
50+
builder.Services.ConfigurePassiveHealthChecker();
5851

5952
// Configure health check endpoint
6053
app.UseHealthChecks("/health");

0 commit comments

Comments
 (0)