1. 程式人生 > >asp.net mvc中序列化字串長度受限的問題

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