4

我们注意到,对于 2012 NetSuite Web 服务(可能还有所有其他版本),当我们从 .NET 2.0 64 位应用程序发出调用时,如果响应没有快速返回,那么我们的应用程序将间歇性地挂起NetSuite 应用程序记录显示 SOAP 调用成功。挂起最终在 5 分钟(!)后超时(超时),因为 NetSuite(或其他东西)保持套接字打开,它只是停止发送数据包。

我们运行了网络跟踪并注意到数据包出现乱序、被丢弃、莫名其妙的重复确认等。本质上,它“吓坏了”。微软技术人员从未见过这样的事情——至少我也谈到过。

我们运行了一个简单的测试应用程序,它只做护照输入,然后查询会计期间。它是在解析 SOAP 响应时挂起的搜索方法 - 总是大约 10 秒。

一旦我们以 32 位环境为目标,一切都会像魅力一样运行,即使 32 位二进制文​​件是在 64 位操作系统上运行的。显然,作为 64 位应用程序运行会设置一些 NetSuite 真正不喜欢的网络协议配置。

我们在 Azure、Amazon 和本地(我们的公司网络)Windows 2008 R2 SP1 64 位服务器上进行了测试——物理和虚拟机。

我们没有确凿的证据证明“为什么”会发生这种情况,但是在拔掉头发一个月后(我们现在都秃了),我们认为我们偶然发现了一个问题。这个太奇怪了,但是,我不愿意出去声称这仍然不是我们正在做的事情。所以,如果你不相信:

  1. 打开 Visual Studio 2010 并创建一个面向“任何 CPU”的 .NET 2.0 控制台应用程序。

  2. 执行“添加 Web 引用...”并添加 NetSuite WSDL。

  3. 创建一个简单的护照登录并进行搜索以返回一些内容。

  4. 在高峰工作时间(即出现在太平洋标准时间上午 7 点至下午 2 点左右)在 64 位操作系统上多次运行 EXE(此错误是间歇性的)。

    这正是我们所做的。如果您返回并创建一个新的 x86 目标并重新构建项目,它可以正常工作。

4

0 回答 0