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

如何在.NET 6 Worker项目中添加中间件实现健康检查?

.NET 6 Worker 服务配置健康检查端点实现方案

Worker 服务默认基于通用主机模板构建,没有内置HTTP请求管道,只需要显式引入ASP.NET Core的Web宿主能力,就可以和Web应用一样配置健康检查端点,完全兼容你预期的两个端点的配置逻辑,也不会影响原有后台任务的运行。

前置依赖安装

首先给项目安装必需的NuGet包:

  • Microsoft.Extensions.Diagnostics.HealthChecks:.NET官方健康检查核心库
  • AspNetCore.HealthChecks.UI.Client:提供健康检查UI适配的响应格式化方法,对应代码里的UIResponseWriter

完整实现代码

直接修改默认的主机构建逻辑,通过ConfigureWebHostDefaults扩展嵌入HTTP管道,原有Worker服务的注册逻辑完全保留:

IHost host = Host.CreateDefaultBuilder(args)
    // 嵌入ASP.NET Core HTTP管道,用于暴露HTTP端点
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.ConfigureServices(services =>
        {
            // 注册健康检查服务
            services.AddHealthChecks()
                // 注册基础自检测项,对应liveness端点的过滤规则
                .AddCheck("self", () => HealthCheckResult.Healthy());
                // 可在此处链式追加其他依赖的健康检查,比如数据库、Redis、消息队列等
        });

        webBuilder.Configure(app =>
        {
            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                // 全量健康检查端点:返回所有注册检查项的详细结果,适配健康检查UI
                endpoints.MapHealthChecks("/hc", new HealthCheckOptions()
                {
                    Predicate = _ => true,
                    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
                });
                // 存活检测端点:仅返回服务本身运行状态,适合k8s等编排系统的liveness探针
                endpoints.MapHealthChecks("/liveness", new HealthCheckOptions
                {
                    Predicate = r => r.Name.Contains("self")
                });
            });
        });
    })
    .ConfigureServices(services => 
    { 
        // 原有后台服务注册逻辑保持不变
        services.AddHostedService<Worker>(); 
    })
    .Build();

await host.RunAsync();

配置说明

  • 监听端口配置:默认会读取ASPNETCORE_URLS环境变量、项目launchSettings.json中的端口配置,也可以在ConfigureWebHostDefaults中调用webBuilder.UseUrls("http://*:你需要的端口")显式指定监听地址。
  • 健康检查扩展:后续要新增数据库、外部服务等依赖项的健康检查,和Web项目的用法完全一致,在AddHealthChecks()后链式调用对应检查的扩展方法即可。
  • 运行逻辑无侵入:添加Web宿主配置不会改变Worker服务作为后台任务的执行逻辑,原有BackgroundService的生命周期完全不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:33:18