[英]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.