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

.NET5 API中Health Check UI状态无效问题求助

.NET5 Health Check UI JSON解析错误排查

问题根源

错误提示解析到意外字符<,说明Health Check UI请求/health时收到的不是预期的JSON响应,而是HTML内容(比如404错误页、路由匹配失败后的页面)。手动访问/health正常,说明端点本身配置无问题,但UI发起请求时的目标路径解析出错。

可能原因及解决方案

1. 相对路径导致请求地址错误

Health Check UI运行在浏览器环境中,若配置的是相对路径/health,当应用部署在子路径下(比如/api),浏览器会将相对路径解析为根路径下的/health,而非子路径下的/api/health,导致请求到不存在的端点,返回404 HTML页面。

解决方式:
在ConfigureServices配置Health Check UI时,使用绝对URL指定健康检查端点,示例代码:

services.AddHealthChecksUI(options =>
{
    options.AddHealthCheckEndpoint("Service", "http://localhost:5000/health"); // 替换为你的实际服务地址
    options.SetEvaluationTimeInSeconds(30);
})
.AddInMemoryStorage();

生产环境可通过配置文件读取绝对URL,避免硬编码。

2. 端点映射顺序或响应格式问题

确保Configure方法中端点映射顺序正确,且健康检查端点配置了UI所需的响应写入器:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    // 优先映射健康检查端点,确保路由匹配优先级
    endpoints.MapHealthChecks("/health", new HealthCheckOptions
    {
        ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
    });
    endpoints.MapHealthChecksUI();
});

UIResponseWriter.WriteHealthCheckUIResponse是Health Check UI要求的响应格式,确保返回的JSON结构符合UI解析标准。

3. 反向代理或部署路径问题

若应用通过反向代理(如Nginx、IIS)部署,需确认反向代理正确转发/health和/healthchecks-ui的请求,未修改请求路径导致端点匹配失败。

验证方法

打开浏览器开发者工具(F12)切换到网络标签页,刷新Health Check UI页面,查看UI发起的健康检查请求地址和返回内容:

  • 若请求地址错误,调整UI配置的端点URL;
  • 若返回内容为HTML,手动访问该地址确认是否能返回正常JSON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:10:35