问题描述
使用App Service的Health Check功能,导致实例状态Unhealthy,重启也不能解决问题。
这是什么情况呢?
问题解答
根据Health Check所配置的path,分别使用http和https进行访问,检查请求的响应是否属于 200 ~ 299 之间。
对于 App Service For Windows 应用,默认情况下,Health Check ping 请求的端口号是 80 (即 http),如果应用代码中会自动执行http 到https的跳转,导致Health Check认为实例不正常,标记为Unhealthy。如果开启了HTTPS Only,则Health Check会通过443端口(https)发送请求。
以.NET Core的代码为例, app.UseHttpsRedirection() 就会自动把http调转到https
可以通过设置App Service只支持HTTPS访问来解决此问题。
参考资料
使用运行状况检查监视应用服务实例 :https://docs.azure.cn/zh-cn/app-service/monitor-instances-health-check?tabs=dotnet
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!