.NET Core 2.2健康检查报错:无法解析HealthCheckService服务
解决.NET Core 2.2健康检查中无法解析HealthCheckService的问题
嘿,我之前也踩过这个坑!你遇到的错误根源很明确:只注册了自定义的IHealthCheck实现,但没在服务容器中添加健康检查的核心服务HealthCheckService。
在.NET Core 2.2的健康检查体系里,UseHealthChecks中间件依赖HealthCheckService来执行所有注册的健康检查,而这个核心服务不会自动注册——你得显式调用AddHealthChecks()方法来初始化它,同时把你的自定义检查绑定进去。
修复步骤:
- 更新
ConfigureServices方法,先调用AddHealthChecks(),再添加你的自定义健康检查:
public void ConfigureServices(IServiceCollection services) { // 先添加健康检查核心服务体系 services.AddHealthChecks() // 注册你的自定义IHealthCheck实现,替换成你的类名和自定义检查标识 .AddCheck<YourCustomHealthCheck>("custom_health_check"); // 其他服务注册逻辑... }
- 你的
Configure方法不需要修改,保持原来的UseHealthChecks调用即可:
public void Configure(IApplicationBuilder app) { app.UseHealthChecks("/hc"); // 其他中间件配置逻辑... }
错误原因详解
HealthCheckMiddleware在激活时需要HealthCheckService实例来处理健康检查请求,但你之前只注册了自己的IHealthCheck实现,没有初始化整个健康检查服务体系,所以DI容器找不到对应的服务依赖,就抛出了InvalidOperationException。
内容的提问来源于stack exchange,提问作者lmcarreiro
相关产品推荐
相关产品推荐

