接收大数据时,ServiceStack会抛出StackOverflowException

chr*_*izi 9 .net c# stack-overflow silverlight servicestack

我使用ServiceStack的JsonServiceClient和Silverlight 5从我的ASP.Net服务器接收JSON数据.它适用于简短的JSON字符串,但是当涉及到非常大量的数据时,会抛出StackOverflowException ServiceStack.ServiceClient.Web.AsyncServiceClient.ReadCallBack<>.

所以我检查了GitHub上的最新源代码,并注意到数据是从块中以块状方式读取的,大小为4096字节.问题是这个方法读取一个块并告诉流完成后递归调用自身.我们收到的数据越多,发生的递归调用就越多.这就是当接收到的数据太大时应用程序崩溃的原因.

思路:

  • 将方法重构为迭代而不是递归.对于所有这些有条件的回报,等待,尝试捕获等等,这似乎是一项艰巨的任务.
  • 增加块大小.我不知道4096这里有什么理由,所以我宁愿不单独做这件事.

无论如何,在我下载所有源代码,自己修改和编译之前,我想听听你对此的看法.这是一个错误还是我错了?

Yas*_*adi 0

您始终可以创建一个新线程并将堆栈大小传递给它的构造函数 这将始终有效 请注意,在某些情况下(例如 ASP.NET 开发),默认情况下您的堆栈跟踪大小非常小。祝你好运