我正在将ServiceStack的JsonServiceClient与Silverlight 5一起使用,以从ASP.Net服务器接收JSON数据。它非常适合短JSON字符串,但是当涉及大量数据时,在ServiceStack.ServiceClient.Web.AsyncServiceClient.ReadCallBack<>
中引发StackOverflowException。
因此,我检查了有关GitHub的最新源代码,并注意到从数据流中以4096 bytes块的形式逐块读取数据。问题在于此方法读取一个块,并告诉流在完成后以递归方式调用自身。我们收到的数据越多,发生的递归调用就越多。这就是为什么接收到的数据太大时应用程序崩溃的原因。
想法:
在这里,所以我宁愿不要一个人做。
无论如何,在我下载所有源代码,自己进行修改和编译之前,我想听听您对此的看法。这是一个错误还是我使用错了?
最佳答案
对于您的JSON响应,通过网络发送的字符串长度有一个限制。在外部应用程序上,您可能永远都不会达到默认限制。但是,在内部应用程序上您可能会碰到它,因为重量不是问题,这是问题所在。您需要在web.config文件中添加以下内容,以最大程度地增加JSON字符串的长度。
请注意,您不能将字符串长度设置为无限制。另外,我认为您无法超越2147483644。
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
关于c# - 接收大数据时,ServiceStack引发StackOverflowException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18720651/