c# - 从 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 服务器在充当网关或代理服务器时收到无效响应”的网页。
有任何想法吗?建议?
解决方案
我偶然发现了这个修复。我正在比较 dev 和 prod 之间的应用程序网关,我注意到一个名为“DenyAllInbound”的入站端口规则位于端口 4096 上。我把它拉出来,一切又开始工作了。我不确定该规则最初是如何到达那里的。看起来 502 是来自 Azure 的通用“出现问题”消息。
FWIW,我通过使用应用程序网关监控下的“连接故障排除”链接找到了“拒绝所有入站”规则。
推荐阅读
- python - 如何制作阴影贴图?
- spring - 如何让 Spring Boot Actuator LdapHealthIndicator 与 Spring Security 的 Ldap 一起运行?
- javascript - Metamask 返回 RPC 错误:错误:[ethjs-rpc] rpc 错误,有效负载 {"id":5715960965837,"jsonrpc":"2.0","params":
- swift - ios12系统图像按钮的色调不起作用
- android - Android 应用程序不显示 AdMob 广告
- html - 元素边界处的空白
- libcurl - 使用 BoringSSL 1.1.0 在 Windows 上卷曲静态编译问题 (X509_NAME)
- javascript - 有没有办法使用循环随着时间的推移将多个文档发送到 MongoDB?
- c# - 是否可以让datagridview看起来像spss环境
- python - 我正在尝试制作脚本并且出现此错误