【发布时间】:2021-09-03 08:00:07
【问题描述】:
我在尝试从 Azure VM 发出 HTTP 请求时遇到了一个有趣的问题。看来,当从该 VM 运行请求时,响应永远不会到达。我尝试使用发出 HTTP 请求和 Postman 的自定义 C# 代码。在这两种情况下,我们都可以在目标 API 端的日志中看到已发送响应,但在源 VM 上未收到任何数据。完全相同的 C# 请求和 Postman 请求在此 VM 之外的多个网络和机器中工作。 在 VM 端实际适用于此请求的唯一工具是 Curl Bash 终端,但根据当前要求,它不是一个选项。
在 Windows 10 和 Windows Server 2019 上尝试了多种 Azure VM 大小。
目标 API 是本地托管的,大约需要 5 分钟才能将数据发回。有效负载非常小,但由于在 API 端执行的计算需要一段时间才能生成。修改此 API 不是一种选择。
所以要清楚 - 请求永远卡住,直到达到客户端超时(如果已配置)。有人知道这可能是什么原因吗?
【问题讨论】:
-
当网络路由将返回数据包定向到另一条路由然后到达防火墙时,我观察到这些行为 - 您可以从 VM 授权 443 上的 https 但然后看不到响应让它回来,因为它遍历与出站不同的网络路由。恐怕我不是专家,无法确切建议要查找的内容,但网络路由可能是一个查询线。
-
@TomW 感谢您的建议,我尝试为测试启用所有端口,但没有帮助。有趣的是,对同一 API 进行不同的 get 操作也可以正常工作,正是这个特定的操作会导致问题(但它也是迄今为止标准场景中运行时间最长的操作)。这也让我感到困惑,curl bash 如何每次都能做到 100% 正确。
标签: azure http curl postman azure-virtual-machine