ajax调用 - 在asmx webmethod中返回大json字符串时的outofmemory异常

时间:2017-02-05 06:37:40

标签: c# ajax web-services serialization

  

类型的异常' System.OutOfMemoryException'扔了:

     

在System.Text.StringBuilder.ToString()处   System.Web.Util.HttpEncoder.JavaScriptStringEncode(String value)at   System.Web.HttpUtility.JavaScriptStringEncode(String value,Boolean   addDoubleQuotes)at   System.Web.Script.Serialization.JavaScriptSerializer.SerializeString(字符串   输入,StringBuilder sb)at   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(对象   o,StringBuilder sb,Int32 depth,Hashtable objectsInUse,   SerializationFormat serializationFormat,MemberInfo currentMember)
  在   System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(对象   o,StringBuilder sb,Int32 depth,Hashtable objectsInUse,   SerializationFormat serializationFormat,MemberInfo currentMember)
  在   System.Web.Script.Serialization.JavaScriptSerializer.Serialize(对象   obj,StringBuilder输出,SerializationFormat serializationFormat)
  在   System.Web.Script.Serialization.JavaScriptSerializer.Serialize(对象   obj,SerializationFormat serializationFormat)at   System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext的   context,WebServiceMethodData methodData,IDictionary`2 rawParams)
  在   System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext的   context,WebServiceMethodData methodData)

返回的json字符串很大(超过5MB),这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

默认情况下,可以发送或接收4MB数据(最大值)。如果要发送更多内容,则必须更改web.config文件中的maxMessageLength,如下所示。

 <configuration>

  <system.web>

     <httpRuntime maxMessageLength="409600"

       executionTimeoutInSeconds="300"/>

 </system.web>

</configuration>

通过上述设置,您可以发送400MB数据,最长时间为300秒。在此之后,您的执行将作为TimeOut停止。