gpt4 book ai didi

c# - Azure Web 角色访问外部 Web 服务时遇到问题

转载 作者:行者123 更新时间:2023-11-30 18:47:43 26 4
gpt4 key购买 nike

我有一个 Azure Web 角色,可以访问基于外部 WCF 的 SOAP Web 服务(端口 80)以获取各种数据。该服务的响应非常不稳定。我经常收到以下错误。

There was no endpoint listening at http://www.myexternalservice.com/service.svc that could accept the message. This is often caused by an incorrect address or SOAP action.

为了隔离问题,我创建了一个简单的控制台应用程序,以 1 秒的间隔重复调用此服务并记录所有响应。

    using (var svc = new MyExternalService())
{
stopwatch.Start();
var response = svc.CallService();
stopwatch.Stop();
Log(response, stopwatch.ElapsedMilliseconds);
}

如果我通过 RDP 连接到我的 Azure Web 实例之一并运行此应用程序,则需要 10 到 20 次尝试才能从外部服务获得有效响应。这些第一次尝试总是伴随着上述错误。经过这个“热身期”后,它运行良好。如果我停止应用程序然后立即重新启动,它必须返回相同的“预热”期。

但是,如果我从任何其他计算机运行相同的应用程序,我会立即收到有效的响应。我已经在多个数据中心(非 Azure)中运行的服务器、不同网络上的桌面等上运行了这个记录器应用程序...这些测试运行总是非常稳定。

我不确定为什么该服务在 Azure 环境中会有这样的 react 。不幸的是,短期内我被迫调用此服务,但我的用户无法容忍这种不一致。

Azure 服务器上的网络流量捕获表明,在我遇到连接错误的同时,每隔 10 秒就会发生大量 SynReTransmit。一旦“预热”完成,SynReTransmit 就不再发生。

最佳答案

部署 Windows Azure 应用程序的 Windows Azure 数据中心区域可能不靠近外部 Web 服务。您正在尝试的本地计算机(工作正常)可能靠近网络服务。这就是为什么 Azure 中可能存在巨大延迟,这可能会导致其失败。

从 Azure VM 中的浏览器成功访问 WSDL 可能是由于浏览器缓存所致。从浏览器进行函数调用会告诉您它是否确实正在建立连接。

关于c# - Azure Web 角色访问外部 Web 服务时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com