本文轉自:http://blog.csdn.net/blacksource/article/details/18797055
先對項目做個簡單介紹:
整個項目采用微軟的ASP.NET MVC3進行開發,前端顯示采用EasyUI框架,圖表的顯示用的是Highcharts,主要進行曲線圖的繪制,這樣比較形象地描繪出變化的趨勢。由於數據量比較大(大於1000,000條記錄),而highcharts接受的數據類型為json格式,所以controller從數據庫中取出的數據需要先格式化成json,然后再傳到前端。平時一直采用MVC的Json()將數據序列化成json格式,但是由於此次數據量較大,所以曲線不顯示,所以一直以為是由於數據量較大,highcharts插件不支持100w級數據,后來聽人說highcharts本身是支持100w級數據的。最后采用firebug調試才發現出現了錯誤:“使用JSON JavaScriptSerializer進行序列化或反序列化時出錯。字符串的長度超過了為maxJsonLength屬性設置的值”,網上也找了不少解決方案,幾乎無一例外說的是在web.config的節點下添加:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="1024000000" />
</webServices>
</scripting>
</system.web.extensions>
試過后發現曲線還是沒出來,最后拿出殺手鐧:谷歌翻譯成英文,再次搜索,最后終於在stackoverflow上找到解決之法:
public ActionResult GetLargeJsonResult()
{
return new ContentResult
{
Content = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(myBigdata),
ContentType = "application/json"
};
}
具體網址:http://stackoverflow.com/questions/4155014/json-asp-net-mvc-maxjsonlength-exception
這里不得不大贊StackOverflow,好多問題都是在上面找到solution,而且上面還有非常多的好心人士熱心細致的回答問題,我提了好幾個問題都最終得到所謂Geek的幫助並得以解決。這里,我只想說聲:謝謝。