2014-12-19 69 views
0

我在使用下面的代码的同时获得大约17 MB的PPTX文件的数组(如果任何文件小于15 MB,此工作正常)。在jss.Deserialize线,它抛出错误“类型的异常‘System.OutOfMemoryException的’”JavaScriptSerializer反序列化抛出System.OutOfMemoryException

JavaScriptSerializer jss = new JavaScriptSerializer { MaxJsonLength = 2147483644, RecursionLimit = 100 }; 

var requestJson = jss.Serialize(new { serverRelativeUrl = serverRelativeUrl, token = token }); 

WebClient wClient = new WebClient(); 
wClient.Headers["Content-Type"] = "text/json; charset=utf-8"; 

var data = wClient.UploadData(serviceMethodURL, "POST", Encoding.UTF8.GetBytes(requestJson)); 
var responseJson = Encoding.UTF8.GetString(data); 

var response = jss.Deserialize<MethodResponse<byte[]>>(responseJson); 

任何想法?我坚持这一点。请帮助

+0

如果使用JSON.NET序列化/反序列化,你可以用自定义的一个替代默认JsonValueProviderFactory如本博客文章:HTTP:// WWW .dalsoft.co.uk/blog/index.php/2012/01/10/asp-net-mvc-3-improved-jsonvalueproviderfactory-using-json-net/ – sagar43 2014-12-19 10:35:30

+0

Thanx sagar,但它是一个Windows窗体应用程序,所以Global。 asax的东西是不可能的。 – Kaushal15 2014-12-19 10:59:37

+1

@ Kaushal15但JSON.NET是... – t3chb0t 2014-12-19 12:07:41

回答

0

我解决它通过使用

MethodResponse<byte[]> response = null; 
using (System.IO.MemoryStream stream1 = new System.IO.MemoryStream(data)) 
{ 
    System.Runtime.Serialization.Json.DataContractJsonSerializer ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(MethodResponse<byte[]>)); 
    stream1.Position = 0; 
    response = (MethodResponse<byte[]>)ser.ReadObject(stream1); 
} 
return response; 
相关问题