Этот процесс работает идеально, пока размер строки JSON меньше определенного размера (несколько МБ), но как только возвращаемые данные становятся большими (почти 100 МБ), я получаю сообщение об ошибке OutOfMemoryException
Этот код отлично работает с небольшими данными:
Код: Выделить всё
// WebClient ------------------------------------------------------------------
var _client = new System.Net.WebClient();
var _content = _client.DownloadString(_url);
Код: Выделить всё
DownloadStringЯ попробовал перейти на этот вариант, который также работает для небольших данных, но он все равно зависал в строке ReadToEnd, когда размер данных увеличивался .
Код: Выделить всё
using (var _response = (System.Net.HttpWebResponse)_request.GetResponse())
{
using (System.IO.Stream _dataStream = _response.GetResponseStream())
{
using (System.IO.StreamReader _streamReader = new System.IO.StreamReader(_dataStream))
{
string _responseFromServer = _streamReader.ReadToEnd();
}
}
}
Код: Выделить всё
StringBuilder _stringBuilder = new StringBuilder();
using (var _response = (System.Net.HttpWebResponse)_request.GetResponse())
{
using (System.IO.Stream _dataStream = _response.GetResponseStream())
{
using (System.IO.StreamReader _streamReader = new System.IO.StreamReader(_dataStream))
{
while (!streamReader.EndOfStream)
{
char[] _buffer = new char[4096];
_streamReader.ReadBlock(_buffer, 0, _buffer.Length);
var _bufferString = new String(_buffer);
_stringBuilder.Append(_bufferString);
}
}
}
}
Код: Выделить всё
var _results = Newtonsoft.Json.JsonConvert.DeserializeObject(_stringBuilder.ToString());
Он также аварийно завершился с ошибкой простая строка типа
Код: Выделить всё
string _convertedString = _stringBuilder.ToString();
Исключение типа «System.OutOfMemoryException» ' произошло в
mscorlib.dll, но не было обработано в пользовательском коде.
На машине установлена 64-битная версия Windows и 16 ГБ памяти. .
Итак, какие у меня есть варианты?
Все, что мне нужно, это IQueryable из (очень большого) JSON строка.
Подробнее здесь: https://stackoverflow.com/questions/344 ... g-a-string
Мобильная версия