首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MVC中处理大量Json数据?

如何在MVC中处理大量Json数据?
EN

Stack Overflow用户
提问于 2016-08-25 08:03:07
回答 1查看 567关注 0票数 0

如何处理大量的JsonData?

我返回的数据包含200k+行。

我已经将web配置文件设置为ff。

代码语言:javascript
复制
<system.web.extensions>
   <scripting>
       <webServices>
           <jsonSerialization maxJsonLength="50000000"/>
       </webServices>
   </scripting>
</system.web.extensions>

我也加了钥匙。

代码语言:javascript
复制
<add key="aspnet:MaxJsonDeserializerMembers" value="2147483647 " />

问题是,当我在jsonResult上放置一个断点时,它会返回行,但我在浏览器上得到了一个错误,即抛出了'System.OutOfMemoryException‘类型的异常。

这是控制器上的代码

代码语言:javascript
复制
    var jsonResult = Json(listofParticipant);
    jsonResult.MaxJsonLength = int.MaxValue;
    jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
    return jsonResult;

更新

我还试着使用Stream,这样结果就不会留在内存中--我得到的是OutOfMemoryException

代码语言:javascript
复制
  using (StreamWriter sw = new StreamWriter(@"D:\json.txt"))
            {
                using (JsonWriter writer = new JsonTextWriter(sw))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    serializer.Serialize(writer, listofParticipant);
                }
            }

            var xserializer = new JsonSerializer();

            using (var sr = new StreamReader(@"D:\json.txt"))
            using (var jsonTextReader = new JsonTextReader(sr))
            {
                var xx = xserializer.Deserialize<List<PatricipantSearchViewModel>>(jsonTextReader);
                return Json(xx, "application/json", Encoding.Default, JsonRequestBehavior.AllowGet);

            }

我还根据这里的答案添加了这段代码。

代码语言:javascript
复制
protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
{
    return new JsonResult()
    {
        Data = data,
        ContentType = contentType,
        ContentEncoding = contentEncoding,
        JsonRequestBehavior = behavior,
        MaxJsonLength = Int32.MaxValue
    };
}
EN

Stack Overflow用户

发布于 2016-08-27 14:23:38

在web.config中添加以下内容,看看这是否解决了您的问题。

代码语言:javascript
复制
 <system.webServer>  
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" />
      </requestFiltering>
    </security>
</system.webServer>
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39139794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档