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

YARP反向代理自定义健康检查策略ProbingCompleted未触发问题排查

问题分析与修复方案

核心问题

自定义IActiveHealthCheckPolicy的ProbingCompleted方法未触发,主要因配置与代码不匹配、健康检查服务未正确启用导致。

具体修复步骤

1. 修正配置文件的策略名称

appsettings.json中集群健康检查配置的Policy值必须与自定义策略类的Name属性完全一致:

{"Clusters": {
      "abc": {
        "HealthCheck": {
          "Active": {
            "Enabled": "true",
            "Interval": "00:00:10",
            "Timeout": "00:00:10",
            "Policy": "HealthResponsePolicy", // 改为自定义策略的名称
            "Path": "/test"
          }
        },
        "Destinations": {
          "abc": {
            "Address": "http://localhost:5500/abc",
            "Health": "http://localhost:5500/"
          }
        }
      },
      "api": {
        "Destinations": {
          "api": {
            "Address": "http://localhost:5600/"
          }
        }
      }
    }}

2. 启用反向代理的健康检查服务

在Startup.cs的ConfigureServices中,添加反向代理时需明确启用主动健康检查:

public void ConfigureServices(IServiceCollection services)
{
    // 先注册自定义健康检查策略
    services.AddSingleton<IActiveHealthCheckPolicy, HealthResponsePolicy>();
    
    // 添加反向代理并加载配置,同时启用主动健康检查
    services.AddReverseProxy()
        .LoadFromConfig(Configuration.GetSection("ReverseProxy"))
        .AddActiveHealthChecks(); // 关键:启用健康检查核心服务
}

3. 验证目标端点的健康探测地址

确认Destinations中的Health地址正确,YARP会拼接配置的Path(即http://localhost:5500/test)发送探测请求,需确保该端点能正常响应并返回2xx状态码。

4. 检查服务注册顺序

确保自定义策略的注册代码在AddReverseProxy()之前执行,避免服务发现失败。

额外验证

  • 查看应用日志,排查是否存在探测请求失败、策略加载错误等信息
  • 手动访问http://localhost:5500/test,确认端点可正常响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:53:08