我有一个Azure功能APP, HTTP触发调用web服务和传递包含XML的Soap消息。(通过APP服务计划托管)在本地,使用VS2019,该函数成功到达web服务,并在25秒或更短的时间内收到响应。当发布到Azure时,函数仅在<23秒。
我得到一个HTTP服务器500错误返回:20121-10-20 t09:54:46 .263 [Error] Executed 'XXXX' (Failed, Id=0cc4db22-f9ba-4c5d-9f6e-ecd1da394333, Duration=22131ms)连接尝试失败,原因是连接方在一段时间后没有正确响应,或者连接的主机没有响应,导致连接失败。
更新:通过为功能应用https://learn.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-nat-gateway的所有出站请求创建虚拟网络解决了这个问题。
你可以尝试从你的函数应用程序的kudu控制台到达你试图访问的SOAP web服务。详见https://github.com/Azure/azure-functions-host/issues/957,很可能azure的出站IP地址没有被托管SOAP web服务的服务器列入白名单。
感谢Jerry Liu将您的建议作为帮助其他社区成员的答案。
"这是预期的。Http请求在Azure站点上有固定的超时设置。请参阅Azure Web应用程序超时设置230秒。在这方面,Azure Web应用程序和Http触发Azure函数之间没有区别。
对于没有发送任何数据的请求,有一个230秒(即略少于4分钟)的超时。在此之后,客户端获得您看到的500,即使实际上请求被允许继续服务器端。
至于如何绕过这个限制,如果没有必要获得像httpresponse这样的即时反馈,可以使用队列触发器来完成您的工作。
否则,请查看耐久函数。您可以发送http请求来启动编排器,并获得它成功启动的响应,等等。工作正在编排器和活动函数中处理,我们不需要担心超时(因为它们也是非http触发器)。">