Переменные сеанса ASP.NET C # теряются - PullRequest
5 голосов
/ 30 сентября 2011

У меня есть решение, которое включает 2 проекта и 2 файла классов, которые вызываются по ссылке.В одном из моих проектов у меня есть некоторый код в Global.asax в блоке Session_Start, который загружает несколько переменных из базы данных и устанавливает их в переменные сеанса.Если я поставлю точку останова в Global.asax, я смогу убедиться, что переменные на самом деле установлены правильно.

Когда я ссылаюсь на переменные сеанса в классах в любом из моих модулей с выделенным кодом или в классе в моем проекте, они присутствуют.Но если я ссылаюсь на них в одном из классов, который вызывается по ссылке (по сути, это общий класс), все переменные Session равны нулю.

Я использую HttpContext.Current.Session ["varName"] для доступа к переменным в классе, как это стандартно.

Есть ли еще что-то, что мне нужно рассмотреть, чтобы иметь доступ к этим переменным сеанса?Может ли это быть проблемой пространства имен?

Ответы [ 2 ]

5 голосов
/ 30 сентября 2011

Раньше у меня была такая же проблема, я продолжаю терять переменные сеанса (хотя и не в том же контексте, что и у вас).Я нашел эту статью полезной для моей проблемы: Пример использования ASP.NET: потерянные переменные сеанса и домены перезаписывают и PRB: данные сеанса теряются при использовании режима состояния сеанса ASP.NET InProc ,Надеюсь, это может помочь вам тоже.Ура! * * 1005

3 голосов
/ 07 июля 2014

Вы вызываете Session.Abandon () где-нибудь в коде?Я делал это в начале своего веб-приложения, чтобы убедиться, что я начинаю с «свежей» сессии.Оказывается, что любые переменные Session, сохраненные даже через после , «Abandon» будут отброшены (даже если SessionID был вынужден остаться прежним с помощью других средств, таких как использование Server.Transfer (Url, true), а неResponse.Redirect), при обратной передаче.

то есть я мог бы отследить в своем приложении, посмотреть, правильно ли установлены все переменные сеанса, и затем момент любого обработчика события (что-нибудь с AutoPostBack = "True", например, флажокили кнопка на UpdatePanel), BAM, у меня был тот же SessionID, но нулевые переменные сеанса.

Удаление упреждающего вызова Session.Abandon () решило мою проблему сразу.

Jeff

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...