这是我开始在我的移动应用程序中使用OData后遇到的最奇怪的问题之一。我开发的OData服务器由SQL Express 2008支持,在过去的15个月中,这种组合已安装在50台不同的服务器和/或PC上。所有50台服务器都运行稳定,具有一致的大量数据功能。
几天前,我的一位客户与我联系,表示我的客户端应用程序(在iOS7上运行)在将数据发布到服务器时出现了奇怪的错误。该错误的HTTP代码为400,错误文本为“操作无法完成。(超时错误400.)”。我的第一个问题是:为什么400代码会出现超时错误?通常当我获得超时(由于防火墙等)时,它们在100x范围内。服务器上的事件日志中没有任何迹象表明发生任何问题。我自己的日志(存储在SQL数据库中)显示没有错误(这很奇怪,因为我在我的OData服务中使用通用异常捕获方法来记录任何问题)。我还没有完成添加所有请求记录的步骤。
只有在发布一组特定数据时才会引发错误。设备上的所有其他帖子都运行正常。我让客户端重新安装应用程序(删除所有数据),然后下载导致错误的数据集。下载工作正常。我们开始对数据进行更改,以复制在增量更改中发生错误时数据的样子,将更改发布到服务器并观察结果。大多数增量更改都可以正常工作,但某些组合会导致错误发生。其中一个增量涉及大量更改并且发布正常,但随后对任何对象进行更改(有时在文本字段中更改为少至6个字符)会导致错误发生。但在某些情况下,更改已经发布到服务器的对象可以顺利运行。
我从服务器擦除了服务组件并进行了全新安装。我移动了TCP端口,以防443另一个监听器导致问题。我重置了服务器。这些都不会改变错误的行为。
我的最后一个解决方案是完全重新安装IIS和.NET Framework,但我显然想避免这种情况,因为它不是我的服务器......服务器在我当前的位置海外,所以调试不是真的选项。希望有人知道我可以在诊断上做些什么来尝试确定这个奇怪的'gremlin'的来源。