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

如何结合Action<IServiceProvider>使用IHealthChecksBuilder.AddTypeActivatedCheck<T>?

解决方案

可以通过IHealthChecksBuilder.AddCheck的重载方法实现需求——它既允许你访问IServiceProvider解析依赖构建健康检查,又能设置健康检查的元数据(名称、标签、失败条件等)。

具体实现示例

假设你有一个自定义健康检查类MyCustomHealthCheck,需要从DI容器中解析依赖项,同时要配置它的元数据:

builder.Services.AddHealthChecks()
    .AddCheck("custom_health_check", sp =>
    {
        // 在这里访问IServiceProvider,解析所需依赖
        var dependency = sp.GetRequiredService<IMyDependency>();
        return new MyCustomHealthCheck(dependency);
    },
    failureStatus: HealthStatus.Degraded,
    tags: new[] { "custom", "database" },
    timeout: TimeSpan.FromSeconds(5));

关键说明

  • AddTypeActivatedCheck<T>本身的设计是直接通过构造函数注入DI中的依赖,不需要额外的Action<IServiceProvider>委托。如果你的健康检查类的构造函数参数都能被DI自动解析,直接使用AddTypeActivatedCheck<T>即可:
    builder.Services.AddHealthChecks()
        .AddTypeActivatedCheck<MyCustomHealthCheck>("custom_check", failureStatus: HealthStatus.Unhealthy);
    
  • 当你需要更灵活的控制(比如手动解析依赖、执行额外DI操作),AddCheck的Func<IServiceProvider, IHealthCheck>重载是最优选择,它完全满足你访问服务容器+设置元数据的需求,比AddScoped<IHealthCheck>的方式更贴合健康检查的配置场景。

内容的提问来源于stack exchange,提问作者Jason Ayer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:14:51