首页 > 其他分享 >【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"

【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"

时间:2022-11-08 19:59:57浏览次数:63  
标签:HTTP Service App 实例 HTTPS 运行状况 Azure

问题描述

为App Service配置了健康检查,单独访问Health Check Path的路径,返回代码为200。但为什么在App Service的页面上,一直提示“实例运行不正常”呢?

 

问题解答

通过查看Health Check Path发送的请求,当使用HTTPS的时候,直接返回200,而当使用HTTP访问时,会先进行307跳转为HTTPS,然后返回200。 而运行状态检测为正常的返回范围为 200 ~ 299。所以,如果返回302就会导致实例状态被判断为不正常。

那为什么Health Check会通过HTTP方式访问而且会发生HTTPS的转换呢? 

第一点:这是因为在App Service的配置页面中,设置了HTTPS Only 为Off,也就是说:当前App Service可以通过HTTP的方式访问。

第二点:在应用代码 startup.cs 中启用了中的 app.UseHttpsRedirection()

 

因为第二点的存在,所以导致了HTTP 向 HTTPS的跳转。 如果能够注释掉 app.UseHttpsRedirection(),第一点就不需要修改。 那如果第二点修改代码不容易,就需要修改第一点【 HTTPS Only设置为On】

 

当修改HTTPS Only为On,只允许Health Check发送的请求为HTTPS后,问题解决。运行状态检测结果为正常!

 

参考资料

使用运行状况检查监视应用服务实例 : https://docs.azure.cn/zh-cn/app-service/monitor-instances-health-check?tabs=python

  • 运行状况检查不遵循 302 重定向。
  • 每小时最多更换一个实例,每个应用服务计划每天最多更换三个实例。
  • 如果运行状况检查的状态为 Waiting for health check response,则检查可能会由于 HTTP 状态代码 307 而失败,如果已启用 HTTPS 重定向但禁用 HTTPS Only,就可能发生这种情况。

 

[END]

 

标签:HTTP,Service,App,实例,HTTPS,运行状况,Azure
From: https://www.cnblogs.com/lulight/p/16870949.html

相关文章