【问题标题】:OData HTTP400 Timeout ErrorOData HTTP400 超时错误
【发布时间】:2013-10-31 03:38:48
【问题描述】:

这是自从我开始将 OData 用于我的移动应用程序以来遇到的最奇怪的问题之一。我开发的 OData 服务器由 SQL Express 2008 提供支持,在过去 15 个月中,这种组合已安装在 50 台不同的服务器和/或 PC 上。 50台服务器运行稳定,海量数据功能一致。

几天前,我的一个客户联系我,说我的客户端应用程序(在 iOS7 上运行)在将数据发布到他们的服务器时出现了一个奇怪的错误。该错误的 HTTP 代码为 400,错误文本为“无法完成操作。(超时错误 400。)”。我的第一个问题是:为什么超时错误会返回 400 代码?通常,当我超时(由于防火墙等)时,它们在 100 倍范围内。服务器上的事件日志中没有任何迹象表明发生了任何问题。我自己的日志(存储在 SQL 数据库中)没有显示错误(这很奇怪,因为我在 OData 服务中使用通用异常捕获方法来记录任何问题)。我还没有到添加所有请求的日志记录的步骤。

只有在发布一组特定数据时才会引发该错误。该设备的所有其他帖子都运行良好。我让客户端重新安装应用程序(删除所有数据),然后下载导致错误的数据集。下载工作正常。我们开始对数据进行更改,以复制增量更改中发生错误时数据的样子,将更改发布到服务器并观察结果。大多数增量更改工作正常,但某些组合会导致错误发生。其中一个增量涉及大量更改并且可以正常发布,但是任何对象的后续更改(有时更改文本字段中的 6 个字符)都会导致错误发生。然而,在某些情况下,更改已发布到服务器的对象不会出现问题。

我从服务器上清除了服务组件并进行了全新安装。我转移了 TCP 端口以防 443 有另一个侦听器导致问题。我重置了服务器。这些都不会改变错误的行为。

我最后的解决方案是完全重新安装 IIS 和 .NET Framework,但我显然想避免这种情况,因为它不是我的服务器...服务器在我当前位置的海外,所以调试并不是真正的选项。希望有人知道我可以做些什么诊断来尝试确定这个奇怪的“小鬼”的来源。

【问题讨论】:

  • 我没有办法给你,但我可以告诉你不要绝望; everything 有一个解释(你的问题看起来如此相似又如此不同)。您在任何日志中都看不到任何内容这一事实表明这是相当低级别的,但您从远程设备收到 HTTP 错误这一事实表明它是高级别的。远景:任何路由器在路径上进行 DPI?任何 HTTP 代理或反向代理?

标签: sql-server timeout odata http-status-code-400


【解决方案1】:

您是否尝试过使用 Fiddler 之类的工具进行更彻底的流量分析? “超时”错误确实看起来很奇怪,您发布的内容是您的服务器是“海外”。是否存在正在使用/生成的“时间”的东西,例如服务器时间、当地时间等?

只是为了确认,“相同”的确切数据集总是失败?您可以通过远程调试器或本地主机复制它吗?如果是这样,你能打开“详细错误”吗?

【讨论】:

  • 对造成的混乱表示歉意。关于服务器是操作系统的评论是它在我所在的海外。客户端应用程序和服务器位于同一个 WiFi 网络上。
  • 我使用 Fiddler2 进行开发,但只成功捕获出站数据包及其响应。有没有关于“如何设置提琴手来捕获入站数据包”的好教程?
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 2014-03-28
  • 2012-06-16
  • 2013-08-04
  • 1970-01-01
相关资源
最近更新 更多