Как я могу получить доступ к переменным сеанса из базового класса в ASP.Net? - PullRequest
2 голосов
/ 04 октября 2009

Я столкнулся с этой проблемой, касающейся сеансов в asp.net. Я создаю веб-приложение ASP.Net. Я создал класс BasePage, который наследуется от System.Web.Ui.Page. Этот класс BasePage представляет собой System.Web.Ui.Page с дополнительным членом ActiveUser типа ActiveUser (класс, который я создал самостоятельно). В конструкторе BasePage я установил для члена ui значение this.ui = (ActiveUser)Session["ActiveUser"], которое является предварительно установленной переменной сеанса. Однако, когда я запускаю свой проект, я получаю HttpException в конструкторе BasePage на this.ui = Session["ActiveUser"]. Он говорит мне проверить, однако для enableSessionState установлено значение true в файле конфигурации, и я проверил, что это так. У кого-нибудь есть идеи о том, как решить эту проблему? Это было бы очень высоко ценится. Thanx!

1 Ответ

6 голосов
/ 04 октября 2009

Просто любопытно, почему вы сохраняете это в конструкторе базовой страницы?

Вы не должны получать доступ к сеансу из конструктора, а вместо этого Page_Init. Смотрите следующий пост:

http://weblogs.asp.net/anasghanem/archive/2008/05/07/avoid-using-the-session-in-the-page-constructor.aspx

Переменная сеанса будет доступна в любое время при реализации функциональности страницы, так почему бы не создать статический класс / метод с функциональностью для захвата всех данных сеанса? Я не понимаю, почему вы хотите дублировать хранилище этих данных в вашем базовом классе.

Возможно, вы захотите проверить эту тему: ASP.Net Session

...