json序列化超出MaxJsonLength问题

1.问题背景

     近期使用供应商的系统出现问题,该系统为工位控制系统,给工位下发生产作业,每个作业中的每道生产工序都提供电子作业指导书,辅助工人完成生产工作,并且采集每道工序完成情况数据。近期系统运行出现页面点击确认按钮,无法跳转的问题。

2.问题现象

     系统页面点击确认按钮,无法跳转,提示为json序列化超出MaxJsonLength错误,之前并未遇到此类问题。而且只针对某些特定的工序跳转出错,其他工序跳转没问题。

3.问题定位

       初步推测是字符串解析或者数据查询溢出问题。

4.问题排查

      首先通过浏览器开发工具测试,发现点击按钮调用的是js的InsertSequenceStatus函数,该函数提交ajax post请求返回了500内部服务器错误。测试其他正常工序的跳转,ajax请求返回200OK,对比两次测试的request数据和response数据,发现response返回值中path属性的数据量比较大。

       然后去查看工位控制系统的前端脚本,发现js代码中insertSequenceStatus函数调用后台controller层的函数。通过NET Reflector工具反编译工位控制系统的dll文件查看源代码。controller层的insertSequenceStatus函数调用了service层的insertSequenceStatus函数,而service层中insertSequenceStatus函数返回WI对象,WI对象中含有path属性。经过仔细排查发现path属性是使用base64编码存储作业指导书图片内容。至此推测是图片有问题。

       之后去查看服务器共享文件夹下的作业指导书图片,发现有问题的工序对应的图片大小都超出1900kb,和正常图片(1000kb左右)相比明显大很多,并且近期正好进行产品的工艺升级,进行了作业指导书图片的统一替换。基本断定是新替换的图片太大导致path存储图片内容溢出。

5.问题解决

      将比较大的图片通过画图软件压缩像素,减小到1000kb左右,问题解决了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值