You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中如何在Autofac模块内注册HealthCheck

在Autofac模块中注册.NET 6健康检查的实现方案

你遇到的问题是builder.AddCheck是.NET健康检查的扩展方法,Autofac的ContainerBuilder并没有这个方法,需要换一种方式在模块中注册健康检查:

1. 确保健康检查类实现IHealthCheck

自定义健康检查类必须实现官方的IHealthCheck接口:

public class MyServiceHealthCheck : IHealthCheck
{
    public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
    {
        // 编写你的健康检查逻辑
        return Task.FromResult(HealthCheckResult.Healthy("服务A状态正常"));
    }
}

2. 在Autofac模块中注册健康检查

在InfrastructureModule中需要完成两个核心注册:注册健康检查实例,以及注册HealthCheckRegistration让健康检查系统识别它:

public class InfrastructureModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterType<ApplicationDbContext>().InstancePerLifetimeScope();
        builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerLifetimeScope();

        // 1. 注册健康检查类为IHealthCheck实例
        builder.RegisterType<MyServiceHealthCheck>().As<IHealthCheck>().InstancePerLifetimeScope();

        // 2. 注册HealthCheckRegistration,提供检查的元数据信息
        builder.Register(c => new HealthCheckRegistration(
            "Service ACheck",
            sp => sp.Resolve<MyServiceHealthCheck>(),
            HealthStatus.Unhealthy,
            new[] { "service", "a" } // 可选标签,用于分组筛选检查
        )).As<IHealthCheckRegistration>().SingleInstance();
    }
}

3. 在Program.cs中配置健康检查基础服务

必须在Program.cs中调用AddHealthChecks()初始化健康检查系统,并映射访问端点:

var builder = WebApplication.CreateBuilder(args);

// 配置Autofac作为DI容器
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(container =>
{
    container.RegisterModule(new InfrastructureModule());
});

// 初始化健康检查核心服务
builder.Services.AddHealthChecks();

var app = builder.Build();

// 映射健康检查端点,访问/health即可查看检查结果
app.MapHealthChecks("/health");

app.Run();

关键说明

  • AddHealthChecks()是.NET健康检查系统的初始化入口,必须在Program.cs中调用,它会注册健康检查所需的核心服务
  • Autofac模块负责注册自定义健康检查的实例和对应的注册信息,让健康检查系统能够发现并执行你的自定义检查

内容的提问来源于stack exchange,提问作者Arh Hokagi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:25:18