System.ArgumentException: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。

发布时间 2024-01-11 10:57:31作者: 奇迹之耀

这次一次.NET Framework MVC中的报错

猜测是框架默认会先将post请求中body携带的json进行解析,然后将解析后得到的参数填入对应接口的参数中

但是JavaScriptSerializer默认只能序列化2M内的json字符串,超过2M就会报错

解决方法1:修改maxJsonLength大小,改为5M

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

解决方法2:删除接口中的参数,绕过框架的默认json解析,改为自己解析

使用Request.QueryString获取Url中参数

Length = Convert.ToInt32(Request.QueryString["Length"])

使用Request.InputStream获取body中参数

Stream req = Request.InputStream;
req.Seek(0, System.IO.SeekOrigin.Begin);
json = new StreamReader(req).ReadToEnd();