0

我有一个 VB.net Web 服务,它返回运行良好的 JSON。但是,一旦响应达到一定大小,客户端浏览器就会说服务器已关闭连接并且未发送任何数据。使用 IE、Chrome 或 Firefox 也是如此。神奇的大小似乎是大约 16383 条记录,或大约 1.13MB 的数据。我知道这对于 Web 服务来说有点大,但现在请继续使用。

连接刚刚关闭,即不是来自服务器的 500 或其他错误。我还在 IDE 的 IIS 7.5 和 ASP.net 开发服务器上看到了相同的行为。

使用 firebug、fiddler 和 wireshark 似乎都表明服务器正在关闭连接。

因为我可以在 IDE 中使用调试模式发生这种情况,所以我可以单步执行服务并查看服务被调用,调用数据库,正确获取所有记录,然后正常退出子。我还证实这不是数据问题。

为了尝试跟踪,我将此参数添加到我的 system.web

运行 Web 服务时,Trace.axd 显示结果为 200,因此看起来 Web 服务器很高兴,但连接仍然关闭。但是,此跟踪并未显示太多细节。

服务器或客户端是否有任何已知原因会关闭这样的连接?以这种方式使用 IIS 是否存在任何已知的响应大小限制?有什么方法可以更好地追踪这一点吗?

非常感谢。

4

1 回答 1

1

我想我已经弄清楚了。我发现问题的方法是通过 WCF 跟踪:msdn.microsoft.com/en-us/library/ms733025.aspx。它给了我这个错误:对象图中可以序列化或反序列化的最大项目数是“65536”。更改对象图或增加 MaxItemsInObjectGraph 配额。所以我按照它所说的做了,并提高了 MaxItemsInObjectGraph 并解决了问题。我不确定数学是如何工作的,因为 16383 个项目都有 3 个字段,所以应该是 49149 个对象,但无论如何。提高这个解决了这个问题。

于 2012-03-01T18:31:04.603 回答