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

如何为AddHealthCheckEndpoint()方法添加带身份认证的URL

问题根因

HealthChecks UI 后端通过内置HttpClient主动请求/health端点拉取健康状态,默认配置下该请求不会携带Windows认证凭据,也没有预设认证信息,会被IIS的Windows认证规则拦截返回401未授权,最终UI判定端点不健康。

可行解决方案

方案1:配置静态Windows凭据(匹配静态凭据适配需求)

直接在HealthChecks UI的Http消息处理器配置中,给HttpClientHandler设置固定的Windows认证凭据即可,修改ConfigureServices中的HealthChecksUI注册代码如下:

services.AddHealthChecksUI(opt =>
{
    opt.UseApiEndpointHttpMessageHandler(sp =>
    {
        return new HttpClientHandler
        {
            ClientCertificateOptions = ClientCertificateOption.Manual,
            ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => { return true; },
            // 配置静态Windows认证凭据
            UseDefaultCredentials = false,
            Credentials = new System.Net.NetworkCredential(
                userName: "具备站点访问权限的Windows账号",
                password: "对应账号的密码",
                domain: "账号所属域,若为服务器本地账号填写服务器机器名即可"
            )
        };
    });
    opt.SetEvaluationTimeInSeconds(5);
    opt.MaximumHistoryEntriesPerEndpoint(60);
    opt.SetApiMaxActiveRequests(1);
    // 注意补全http/https前缀,否则HttpClient会出现地址解析错误
    opt.AddHealthCheckEndpoint("Site Health", "https://www.example.com/health");
}).AddInMemoryStorage();

该方案存在一定维护成本:账号密码硬编码在代码中存在泄露风险,后续账号密码更新需要同步修改配置,生产环境建议将凭据存储在专用密钥管理服务中,不要硬编码。

方案2:单独给健康检查端点放开匿名访问(生产环境推荐)

健康检查端点仅返回服务运行状态,不涉及敏感业务数据,不需要强制开启Windows认证。你不需要维护静态凭据,仅需在端点映射时给/health路径单独配置匿名访问权限,保持站点其余路径的Windows认证规则不变即可,修改端点配置代码:

endpoints.MapHealthChecks("/health", new HealthCheckOptions()
{
    Predicate = _ => true,
    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
}).AllowAnonymous(); // 单独为健康检查端点放开匿名权限
endpoints.MapHealthChecksUI();

如果你的认证规则是在IIS层面配置的,可直接在IIS的授权规则功能中,针对/health路径新增允许匿名用户访问的规则,优先级高于站点全局认证规则即可。该方案无凭据维护成本,是健康检查场景的标准实践。

额外注意事项

原有配置中注册健康检查端点的地址为www.example.com/health,缺少http://或https://前缀,即使认证配置正确,HttpClient也会因地址格式不合法请求失败,无论使用哪种方案都需要补全URI前缀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:12:17