Все,Newtonsoft Json - OutOfMemoryException
Окружающая среда: ASP.net 2,0, 3,3 Nhibernate, Json.net (последнее, 6.x)
Я использую последнюю версию библиотеки Newtonsoft.Json. Когда я загружаю объект, использующий nhibernate (мои объекты ссылаются на другие объекты и загружаются лениво), я получаю исключение из памяти или исключение stackoverflow.
Код для OutOfMemory исключения:
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
settings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
string json = JsonConvert.SerializeObject(container.DataItem, settings);
Код для StackOverflow исключения:
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
settings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
string json = JsonConvert.SerializeObject(container.DataItem, settings);
Люди имеют эти вопросы, но, кажется, нет никакого решения. Я вижу ответы, такие, что ваш график большой или слишком глубокий, но мой объектный граф невелик, - я просто вызываю код выше много раз (по одному на каждый объект). Мне нужно исправить это.
Вы уверены, что ваш объект график небольшой? Вы уверены, что он не постоянно перетекает из одной ленивой коллекции в другую, постепенно загружая всю базу данных? –
Я собираюсь подтвердить это на следующей неделе, но, недолго глядя на него, я не видел проблемы. – ActiveX
Я просто проверил свой объектный граф, это не сам объект, а возвращаемый прокси-сервер (см. Ответ ниже). – ActiveX