'System.Web.HttpContext.Current.Session' является нулевым - PullRequest
1 голос
/ 10 июля 2011

У меня есть веб-сайт ASP.NET, который был развернут с 2008 года с большим количеством пользователей. Время от времени я обновлял сайт и без проблем загружал эти изменения на сервер.

Однако сегодня я пытаюсь запустить сайт в своей среде разработки и получаю ошибки каждый раз, когда код пытается получить доступ к состоянию сеанса. Похоже, System.Web.HttpContext.Current.Session всегда null!

Любые предложения о том, где искать? Прошло много времени с тех пор, как я работал над этим, и я не уверен на 100%, работал ли я над ним с текущей версией ASP.NET (4.0).

Кроме того, код работал нормально, и я не вносил никаких изменений с момента его последней работы.

Дополнительная информация

Я потратил все утро на это, но у меня, очевидно, есть большая проблема.

Если я пошагово прошёл код, то увидел, что мой обработчик загрузки страницы выполняется. На этом этапе Session не является нулевым. После этого запускается моя специализированная главная страница. После этого выполняется моя главная мастер-страница. Затем я делаю шаги загрузки для нескольких элементов управления. Все это кажется очень нормальным.

Затем, если я продолжу выполнение, я неожиданно загружаю специализированную главную страницу для другой страницы, и сессия теперь пуста!

Если я нажму F5, это показывает исходная страница. Но почему-то это вызывает загрузку другой страницы без состояния сеанса. Если я отключаю режим отладки, он работает нормально.

Очевидно, у меня что-то странное происходит. Мне нужно определить, почему загружается другая страница.

Ответы [ 5 ]

2 голосов
/ 13 июля 2011

Мои извинения. Предоставленная мною информация была полностью ошибочной и недостаточной для решения проблемы.

Проблема была на самом деле из-за некоторой пользовательской обработки ошибок, которая перенаправлялась на страницу ошибок. Это было настроено в web.config. Эта страница с ошибкой использовала главную страницу, которую таинственным образом выполнял мой код.

Видимо, произошла ошибка в элементе управления GridView. Это код ASP.NET, а не мой, поэтому я не смог пройтись по нему или поймать его обычным обработчиком.

Это было трудно понять. Если бы я выполнял обработчик события Load моей страницы ошибок, то это было бы очевидно. Но, похоже, это пропустили. Таким образом, мое замешательство.

2 голосов
/ 10 июля 2011

Просто предположение - вы деактивировали sessionState по какой-либо причине? Что-нибудь вроде этого:

 <sessionState mode="Off"/>
2 голосов
/ 10 июля 2011

Попробуйте поместить статическую страницу, что-то вроде Test.aspx и перейдите на эту страницу. Если он загружается, попробуйте использовать свойство Session страницы в коде позади. Вы все еще получаете ошибку? В этом случае Session не загружается. Я предлагаю создать модуль HTTP и подключить метод, который отвечает за загрузку информации о сеансе. Посмотри, что не так.

1 голос
/ 10 июля 2011

Попробуйте проверить файл global.asax или любой другой pre-load events и убедитесь, что для Session явно не установлено значение NULL.

0 голосов
/ 11 июля 2011

Может быть, ваша главная страница с ошибками вызывает код из какого-то внешнего класса, где объект сеанса недоступен?

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