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
);

猜你喜欢

转载自www.cnblogs.com/liuxinghen/p/10188910.html