.NET MVC Json()处理大数据异常解决方法
【1-部分原文】: .NET MVC Json()处理大数据异常解决方法
整个项目采用微软的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的帮助并得以解决。这里,我只想说声:谢谢。
【2-实际应用】
后端代码:
ms = np.makeStream(); //excel字节流 byte[] data = ms.ToArray();
fileName = "Report_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".xls";
json = Json(new { Data = data, Status = true, FileName = fileName }); new ContentResult
{
Content = new System.Web.Script.Serialization.JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(json),
ContentType = "application/json"
}; // 如果文件不是很大的话(文件大小的上限没有确认),可以直接用下面的方法,返回json即可 // json = Json(new { Data = data, Status = true, FileName = fileName });
前端代码
            $.ajax({
                url: "/xx/xxx",
                data: {
                    "a": a,
                    "b": "",
                    "c": c
                },
                dataType: "json",
                type: "post",
                success: function (result) {
                    if (result.Data && result.Data.Status) {
                        var byteArray = new Uint8Array(result.Data.Data);
                        var myBlob = new Blob([byteArray], { type: 'application/vnd.ms-excel' });
                        // saveAs 是FileSaver.js的方法
                        saveAs(myBlob, result.Data.FileName);
                        return;
                    } else {
                        alert(result.Msg);
                        return;
                    }
                }
            });

===========END============
.NET MVC Json()处理大数据异常解决方法的更多相关文章
- [转]ASP.NET MVC Json()处理大数据异常解决方法  json maxjsonlength
		本文转自:http://blog.csdn.net/blacksource/article/details/18797055 先对项目做个简单介绍: 整个项目采用微软的ASP.NET MVC3进行开发 ... 
- ASP.NET MVC Json()   处理大数据异常解决方法 json MaxJsonLength
		网上很多解决方案,在webconfig中添加,但是实践证明无效 <system.web.extensions> <scripting> <webServices> ... 
- ASP.NET MVC Json()处理大数据异常解决方法,字符串的长度超过了为 maxJsonLength
		问题: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. <system.web.exten ... 
- poi大数据导入解决方法
		This one comes up quite a lot, but often the reason isn't what you might initially think. So, the fi ... 
- kafkaStream解析json出错导致程序中断的解决方法
		出错在 KStreamFlatMapValues 方法执行时,由于json异常数据无法解析,结果生成的值为null,报错信息如下: 2018-04-18 19:21:04,776 ERROR [app ... 
- Android 异常解决方法【汇总】
		(1)异常:Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解决办法) 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方 ... 
- springboot springmvc 抛出全局异常解决方法
		springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ... 
- win10系统桌面快捷键图标异常解决方法
		win10系统桌面快捷键图标异常解决方法 前言: 有一次我的一个图标变成白色,找到:https://jingyan.baidu.com/article/948f5924148e67d80ef5f947 ... 
- SVN Attempted to lock an already-locked dir异常解决方法
		Attempted to lock an already-locked dir异常解决方法 eclipse或myeclipse用svn提交的时候报错: Attempted to lock an alr ... 
随机推荐
- 1126. Eulerian Path (25)
			In graph theory, an Eulerian path is a path in a graph which visits every edge exactly once. Similar ... 
- bzoj4011 [HNOI2015]落忆枫音   拓扑排序+DP
			题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4011 题解 首先考虑如果没有那么一条被新加进来的奇怪的边的做法. 我们只需要给每一个点挑一个父 ... 
- css 3D动画
			一.今天让我们来学习一下css 3D吧! 1.首先我们要学习好css3 3d一定要有一定的立体感! 2.再来那就聊聊原理吧! 3.css3 3d 顾名思义是由两个2d名片组成的 但不是让你建立连个2d ... 
- web页面调用app的方法
			use_app_goto_page: (skip_type, skip_target) => { // Android App if (/android/i.test(navigator.use ... 
- java:投个票程序
			投票城市用到了:system.in, 正则pattern,matcher,排序接口comparable 复写compareTo排序方法 一个班级在选班长,按序号进行投票,并将票数最高的放在第一位显示 ... 
- Python---进阶---文件操作---搜索文件和保存搜索结果
			### 编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在,如果遇到文件夹,则进入该文件夹继续搜索 - input 去接受用户输入的文件名和开始搜索的路径 - os.path.isdi ... 
- 使用HTML和CSS来实现为文字设置图片底纹
			先看一下最终实现的效果 图中的hello是文本而不是图片 那么如何实现这种效果呢? HTML部分: 创建一个h1标签 ,标签内容为(hello).通过link标签链接外部样式表style.css. s ... 
- mybatis学习$与#号取值区别
			1,多个参数传递用map或实体封装后再传给myBatis, mybatis学习$与#号取值区别 #{} 1.加了单引号, 2.#号写是可以防止sql注入,比较安全 select * from use ... 
- VS2015编译问题:模块对于 SAFESEH 映像是不安全的
			严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2026 模块对于 SAFESEH 映像是不安全的. zlibvc C:\MyDirectory\test2\zlib-\contrib\ ... 
- POJ 3061 Subsequence ( 二分 || 尺取法 )
			题意 : 找出给定序列长度最小的子序列,子序列的和要求满足大于或者等于 S,如果存在则输出最小长度.否则输出 0(序列的元素都是大于 0 小于10000) 分析 : 有关子序列和的问题,都可以考虑采用 ... 
