Один метод сериализации выдает ошибку «Недостаточно памяти», а другая - нет. - PullRequest
0 голосов
/ 10 июля 2019

Только для действительно больших коллекций следующая строка выдает исключение OutofMemroyException в mscorlib.dll на уровне сервера

HttpResponseMessage  response;
response.Content= new StringContent(JsonConvert.SerializeObject(results), 
system.Encoding.UTF8, "text/json");

Однако следующий метод сериализации той же дозы объекта не приводит к этой ошибке

Var serializer= new System.Web.Script.Serilaization.JavascriptSerializer() 
{MaxJsonLength = int.MaxValue};
response.Content= new StringContent(serializer.Serialize(results), 
system.Encoding.UTF8, "text/json")

Однако при втором методе клиент выдает ошибку:

Невозможно десериализовать текущий массив json, так как тип требует объект json

Так что я надеюсь, что либо решупроблема памяти с первым методом или выясните, почему второй метод может быть десериализован как первый метод

Спасибо

1 Ответ

0 голосов
/ 10 июля 2019

С большими объемами данных вы хотите передавать их клиенту, чтобы не пытаться хранить все это в памяти на сервере, как это происходит в ваших примерах.

Вотхороший пост о том, как вы можете использовать JsonTextWriter и JsonSerializer для прямой записи в поток ответов, что сведет к минимуму ваш объем памяти.

http://www.bizcoder.com/returning-raw-json-content-from-asp-net-web-api

...