首页 > 解决方案 > 从 Azure AppService 返回自身的 GET 请求返回 502 Bad Gateway 错误

问题描述

我有一个 Azure AppService/Website,当它收到请求时,服务的一部分涉及向自身发出另一个 GET 请求。这是 HMAC 工作流程的一部分。当我在 localhost 上运行它时,它工作正常,没有错误。导致错误的 Azure 环境存在某些问题。不幸的是,该网站不公开。

using (HttpClient httpClient = new HttpClient())
{
   ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

   apiResponse = await httpClient.GetAsync(apiBaseAddress + "api/Survey/GetApiKey/" + appId);
   entity = await apiResponse.Content.ReadAsAsync<ClientApiRegistrationEntity>();
}

传递给 GetAsync() 的 URL 是正确的。该 URL 在 Azure 中有一个 https 方案;在本地它只是http。如果我将 URL 复制/粘贴到我机器上的浏览器中,请求就会通过。如果我在 Kudu 调试控制台上发出请求,我会得到 502。我已确认 DNS 在 AppService 中正确解析。值得一提的是,Kudu 中的 invoke-webrequest 调用返回一个标题为“502 - Web 服务器在充当网关或代理服务器时收到无效响应”的网页。

有任何想法吗?建议?

标签: c#azurehmackudu

解决方案


我偶然发现了这个修复。我正在比较 dev 和 prod 之间的应用程序网关,我注意到一个名为“DenyAllInbound”的入站端口规则位于端口 4096 上。我把它拉出来,一切又开始工作了。我不确定该规则最初是如何到达那里的。看起来 502 是来自 Azure 的通用“出现问题”消息。

FWIW,我通过使用应用程序网关监控下的“连接故障排除”链接找到了“拒绝所有入站”规则。


推荐阅读