簡體   English   中英

如何在MVC中處理大量的Json數據?

[英]How to handle large set of Json Data in MVC?

如何處理大量的JsonData?
我返回的數據包含200k +行。

我已經將Web配置文件設置為ff。

<system.web.extensions>
   <scripting>
       <webServices>
           <jsonSerialization maxJsonLength="50000000"/>
       </webServices>
   </scripting>
</system.web.extensions>

Ive還添加了密鑰。

<add key="aspnet:MaxJsonDeserializerMembers" value="2147483647 " />

問題是,當我在jsonResult上放置一個斷點時,它返回行,但是在瀏覽器上我收到一條錯誤消息,提示已拋出“ System.OutOfMemoryException”類型的異常。

這是我在控制器上的代碼

    var jsonResult = Json(listofParticipant);
    jsonResult.MaxJsonLength = int.MaxValue;
    jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
    return jsonResult;

更新

我也嘗試使用Stream這樣即使我收到OutOfMemoryException ,結果也不會放在內存中

  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);

            }

我還根據SO中的答案添加了此代碼。

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
    };
}

在web.config中添加以下內容,看看是否可以解決您的問題。

 <system.webServer>  
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" />
      </requestFiltering>
    </security>
</system.webServer>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM