Проблемы с повреждением члена объекта при использовании Session In-Proc - PullRequest
0 голосов
/ 28 сентября 2010

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

Мой текущий режим сеанса - In-Proc и после прочтения другой поток, касающийся аналогичной проблемы Я полагаю, что моя проблема может быть связана.

Сайт использует Sql Reporting Services для генерации некоторых юридических документов путем запроса базы данных и использования XML из двух разных веб-сервисов.В этом сеансе я сохраняю пользовательский объект, содержащий членов, содержащих данные для создания документа в SRSS.

Проблема, возникающая у меня, возникает при открытии двух экземпляров сайта одновременно.Идентификаторы сеансов разные, но когда я начинаю генерировать формы, два объекта как-то разбрасываются по всем другим данным.Я до сих пор не совсем уверен, как это происходит.

До сих пор я думал о том, чтобы попытаться явно сохранить некоторые из наиболее чувствительных членов класса в сеансе, чтобы посмотреть, поможет ли это исправить некоторые из них.коррупция, или перейти к другой форме управления сессиями.У меня есть доступ к серверу SQL, чтобы я мог использовать режим хранения сеанса SQL.

У кого-нибудь есть какие-либо рекомендации / идеи?

1 Ответ

1 голос
/ 28 сентября 2010

Я думаю, что пользовательский объект, который вы храните в сеансе, может:

  1. иметь некоторые статические переменные.
  2. ссылаться на другой объект, который имеет статические переменные.
  3. также хранится в словаре приложения или кэша или где-то в статической переменной.
  4. ссылается на объект, который также хранится в словаре приложения или кэша или где-то в статической переменной.

Я бы предложил проанализировать граф объектов для объекта, который вы храните в сеансе, чтобы выяснить, есть ли какие-то его части, доступные из нескольких потоков на основе критериев 1, 2 и 4, приведенных выше.

Если с графом объектов все выглядит нормально, то я бы, вероятно, начал смотреть на то, как этот объект заполнен, и искать случаи 3 или 4.

...