2

我有一个 Azure Function APP、HTTP 触发器调用 Web 服务并传递包含 XML 的 Soap 消息。(通过APP服务计划托管)在本地,使用VS2019该功能成功到达Web服务并在25秒或更短的时间内收到响应。发布到 Azure 时,函数仅在 < 23 秒后超时。

我收到 HTTP 服务器 500 错误:2021-10-20T09:54:46.263 [Error] Executed 'XXXX' (Failed, Id=0cc4db22-f9ba-4c5d-9f6e-ecd1da394333, Duration=22131ms)连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机没有响应而建立连接失败。

更新:已通过为函数应用程序https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-nat-gateway的所有出站请求创建虚拟网络来解决此问题.

4

2 回答 2

0

您可以尝试从函数应用程序的 kudu 控制台访问您尝试访问的 SOAP Web 服务。请参阅https://github.com/Azure/azure-functions-host/issues/957上的详细信息,很可能 azure 的出站 IP 地址未被托管 SOAP Web 服务的服务器列入白名单。

于 2021-10-20T13:32:09.773 回答
0

感谢Jerry Liu发布您的建议作为帮助其他社区成员的答案。

“意料之中。Http 请求在 Azure 站点上有一个固定的超时设置。请参阅 Azure Web App 超时设置 230s。在这方面,Azure Web 应用程序和 Http 触发 Azure Function 没有区别。

对于未发回任何数据的请求,有 230 秒(即略少于 4 分钟)超时。之后,客户端得到你看到的 500,即使实际上请求被允许继续服务器端。

至于如何绕过这个限制,如果不需要像 httpresponse 这样的即时反馈,您可以使用 队列触发器 来完成您的工作。

否则,看看 Durable function。您可以发送一个 http 请求来启动一个协调器并获得一个成功启动的响应等等。这项工作正在协调器和活动功能中处理,我们不需要担心超时(因为它们也是非 http 触发器)。”

于 2021-10-21T09:33:33.897 回答