asp.net mvc中序列化字符串长度受限的问题
异常信息:
异常类型:InvalidOperationException
异常消息:使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过maxJsonLength属性上设置的值
解决方案
1、在web.config上设置MaxJsonLength属性:
<system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="20971520"/> </webServices> </scripting> </system.web.extensions>
2、在MVC中,重写Controller的Json方法,设置序列化或反序列化时字符串的长度为Int32最大值:
/// <summary> /// 重写Controller的Json方法,设置序列化或反序列化时字符串的长度为Int32最大值 /// </summary> /// <param name="data"></param> /// <param name="contentType"></param> /// <param name="contentEncoding"></param> /// <param name="behavior"></param> /// <returns></returns> 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 }; }
方法调用:
Json( new { field1 = true, field2 = "value" }, "application/json", Encoding.UTF8, JsonRequestBehavior.AllowGet );