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

如何让Azure App Service运行状况检查适配.NET Framework 4.8 Web API

问题分析与解决方案

健康检查的请求特征

Azure App Service 健康检查的请求有以下特点:

  • 直接发送到你的 App Service 默认域名(appservicename.azurewebsites.net),而非自定义域名
  • 默认使用 HTTP 协议发送请求,且不会自动跟随重定向(仅当返回 200-299 状态码时,才会标记实例健康)
  • 请求的 User-Agent 包含 HealthCheck 标识(例如 AzureAppServiceHealthCheck/1.0)

问题根源

你的 web.config 规则会将默认域名的请求重定向到自定义域名,而健康检查不跟随重定向,导致无法获取到健康端点的 200 响应,因此标记实例不健康。同时,强制 HTTPS 规则也会对健康检查的 HTTP 请求触发重定向,进一步加剧问题。

解决方案:修改 web.config 规则

需要调整重写规则,让健康检查请求绕过重定向,直接访问到 server/api/healthcheck 端点。以下是修改后的完整规则:

<rule name="Force HTTPS">
  <match url="(.*)" ignoreCase="false"/>
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTPS}" pattern="off"/>
    <add input="{HTTP_HOST}" pattern="^(.*)\.customdomain\.com$" />
    <add input="{HTTP_USER_AGENT}" pattern="Initialization" negate="true"/>
    <!-- 新增:排除健康检查请求的HTTPS强制跳转 -->
    <add input="{HTTP_USER_AGENT}" pattern="HealthCheck" negate="true"/>
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent"/>
</rule>

<rule name="Redirect requests to default azure websites domain" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_HOST}" pattern="^appservicename\.azurewebsites\.net$" />
    <!-- 新增:健康检查请求不执行重定向 -->
    <add input="{HTTP_USER_AGENT}" pattern="HealthCheck" negate="true"/>
  </conditions>
  <action type="Rewrite" url="https://subdomain.customdomain.com/{R:0}" />
</rule>

<!-- 新增:专门处理默认域名下的健康检查请求 -->
<rule name="HealthCheck for Azure Domain" stopProcessing="true">
  <match url="api/healthcheck" />
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_HOST}" pattern="^appservicename\.azurewebsites\.net$" />
    <add input="{HTTP_USER_AGENT}" pattern="HealthCheck" />
  </conditions>
  <action type="Rewrite" url="server/api/healthcheck" />
</rule>

<rule name="Server">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny">
    <add input="{HTTP_HOST}" pattern="subdomain.customdomain.com$" />
  </conditions>
  <action type="Rewrite" url="server/{R:1}" />
</rule>

关键修改说明

  1. 强制 HTTPS 规则:新增排除健康检查请求的条件,避免对健康检查的 HTTP 请求触发重定向
  2. 默认域名重定向规则:新增排除健康检查请求的条件,让健康检查请求不被转发到自定义域名
  3. 新增健康检查专属规则:识别默认域名下的健康检查请求,直接路由到 server 文件夹内的健康端点

修改完成后,重新部署 web.config,健康检查即可正常识别实例状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:51