Azure API 正在返回空白响应

参考有关 Azure API 管理 故障排除系列的文章,这是实验室的第一个方案。 请确保已按照此说明执行实验室设置说明,以重新创建问题。

原始产品版本:API 管理服务
原始 KB 数: 4464936

现象

API 空白 API 由两个操作 GetHeadersGetMyIp 组成。 GetMyIp 返回 X-FORWARDED-FOR 标头值的值, GetHeaders 返回所有请求标头值。 GetMyIp 返回预期输出,但突然 GetHeaders 开始返回空白响应(无响应正文)。

空白响应的屏幕截图。

GetHeaders API 的预期输出应如下所示:

{
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
    "Accept-Encoding": "gzip, deflate", 
    "Accept-Language": "en-US,en;q=0.5", 
    "Connection": "close", 
    "Cookie": "_gauges_unique_day=1; _gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1", 
    "Host": "eu.httpbin.org", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
  }
}

故障排除步骤

若要调试此类问题,最佳方法是收集 APIM 检查器跟踪 以检查 APIM 管道内的请求处理。

  • 如果查看跟踪,你会注意到转发请求策略缺失。
  • 转发请求策略将传入请求转发到请求 上下文中指定的后端服务。
  • 删除此策略之后,请求就不会转发到后端服务。一旦成功完成入站节中的策略,就会立即对出站节中的策略求值。
  • 因此,<如果在 Blank-API检查 GetHeaders 操作的后端>部分,你会注意到已删除转发请求策略。
  • 在后端部分中添加转发请求策略或添加 <base/> 元素,以便它从父级别(即 API 级别继承转发请求策略),从而解决问题。

阅读有关 转发请求 策略的详细信息。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区