[ASP.net] WebService 中使用AJAX 調用出現 "使用 JSON JavaScriptSerializer 序列化或還原序列化期間發生錯誤。字串的長度超過在 maxJsonLength 屬性上設定的值。"

2016-08-31

因為一些需求,需要將圖片轉成Base64後透過ajax 往後送,我的ajax 是用web service 寫的,結果出現

{"Message":"使用 JSON JavaScriptSerializer 序列化或還原序列化期間發生錯誤。字串的長度超過在 maxJsonLength 屬性上設定的值。
參數名稱: input","StackTrace":"   於 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
 於 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n   於 System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)
 於 System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)
於 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}

於是我查一下資料看到這一篇: http://forums.asp.net/t/1697754.aspx?what+is+maxJsonLength+in+jsonSerialization+
參考文件 : https://msdn.microsoft.com/zh-tw/library/system.web.script.serialization.javascriptserializer.maxjsonlength(v=vs.110).aspx

原來預設是有上限的,所以要超越那上限必須在web.config 加入 :

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

這樣就可以超越限制,至於多少字符那就在換算調整


當麻許的超技八 2014 | Donma Hsu Design.