MVC NewtonSoft返回大字符串

时间:2016-02-28 17:33:54

标签: asp.net-mvc memory json.net

我正在使用MVC构建Web应用程序。对于我的一个视图,我需要获取一个大字符串然后将其绑定到jsTree。但是,有几次我收到了OutOfMemory异常。返回的字符串长度为55,582,723个字符。我在JArray中动态创建一个带有JObject的JArray。

以下是我原来的方式

var jArray = GetJArray();
return jArray.ToString();

使用该代码我经常收到异常。然后我做了一些研究,发现我可以写入流然后返回流。所以我把方法改为:

var jArray = GetJArray();
var serializer = new JsonSerializer();
var ms = new MemoryStream();
var sw = new StreamWriter();
var writer = new JsonTextWriter(sw);

serializer.Serialize(writer, jArray);
writer.Flush();

ms.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(ms, "text/plain");

现在使用此代码,它已经有了很大的改进,但是,在某些情况下,我仍然会获得OutOfMemory异常。返回的字符串将始终与上面提到的长度相同。

对此的任何见解将不胜感激。

编辑:要添加更多信息,我的原始实现中发生了异常:

return jArray.ToString();

例外情况发生在我的第二个实现中:

serializer.Serialize(writer, jArray);

0 个答案:

没有答案