如何在序列化为JSON字符串时修复OutOfMemoryException?

时间:2014-07-07 06:35:51

标签: c# json wcf out-of-memory wcf-rest

我有一个Class对象,其中包含一个属性作为字节数组。此类是我的REST服务的数据协定。字节数组属性将采用Max Size限制为500MB的任何文档。当我尝试使用此服务并序列化对象时,我收到内存异常错误。请找到下面的图片enter image description here

以下是代码段

  public static string SerializeJSon<T>(T t)
        {
            MemoryStream stream = new MemoryStream();
            DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(T));
            DataContractJsonSerializerSettings s = new DataContractJsonSerializerSettings();
            DateTimeFormat dt = new DateTimeFormat("MM/dd/yyyy");
            s.DateTimeFormat = dt;
            **ds.WriteObject(stream, t);**
            string jsonString = Encoding.UTF8.GetString(stream.ToArray());
            stream.Close();
            return jsonString;
        }

1 个答案:

答案 0 :(得分:1)

尝试“不要在Web服务调用中使用500mb文档”。 TH是核心问题 - 您尝试使用方法调用机制来传输半千兆字节的数据,这些数据可能会变成内存对象中的几千兆字节。这不是Web服务的目的。