Azure无法读取ASP.NET Core Web API健康检查状态求助
Azure健康检查显示不健康但端点返回Healthy的排查方案
核对Azure健康检查探测配置
- 确认Azure门户中健康检查的协议与API一致,若API强制HTTPS,需将探测协议设为HTTPS,否则会因协议不匹配失败。
- 检查端口设置,确保和App Service实际监听端口对应(默认是80/443,自定义端口需同步配置)。
- 若API配置了路由前缀(如
/api),健康检查路径需加上前缀,比如/api/_health,避免路径匹配失败。
验证健康检查响应状态码
- Azure健康检查仅认可200-299区间的状态码,直接访问显示"Healthy"不代表状态码符合要求。用以下命令确认实际返回码:
curl -I https://your-api-domain/_health - 若状态码非2xx,排查
AddSqlServer健康检查是否在Azure环境中真正通过:比如连接字符串是否在App Service应用设置中正确配置,数据库防火墙是否允许App Service的出站IP访问。
- Azure健康检查仅认可200-299区间的状态码,直接访问显示"Healthy"不代表状态码符合要求。用以下命令确认实际返回码:
查看App Service日志定位错误
- 进入Azure门户App Service的日志流,查看健康检查探测的请求日志,确认是否存在404、500等错误。
- 打开诊断设置,查看健康检查相关日志,获取探测失败的具体原因,比如路由拦截、权限限制等。
调整中间件顺序
- 确保
UseHealthChecks配置在UseRouting和UseAuthorization之前,避免路由或授权中间件拦截健康检查请求:app.UseHealthChecks("/_health", new HealthCheckOptions { Predicate = _ => true }); app.UseRouting(); app.UseAuthorization(); // 其他业务中间件
- 确保
隔离数据库健康检查问题
- 临时注释
AddSqlServer健康检查代码,重新部署后观察Azure健康检查状态。若恢复正常,说明数据库连接或权限存在问题:- 确认App Service应用设置中的连接字符串
connectStrings.Main正确。 - 将App Service的出站IP地址添加到数据库防火墙白名单(可在App Service属性页查看出站IP)。
- 确认App Service应用设置中的连接字符串
- 临时注释
内容的提问来源于stack exchange,提问作者Chris Calvert
相关产品推荐
相关产品推荐

