Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить доступ к значению из кода в глобальном asax

Автор вопроса: Sudip RoyОтветов: 1

На моей странице я регенерирую идентификатор сеанса при каждом нажатии кнопки, чтобы перейти на следующую страницу. Я уже сохранил имя пользователя в своей переменной сеанса (session["uname"]=txtusername.text) во время входа в систему. Но когда я регенерирую новый идентификатор сеанса, session["uname"] имеет нулевую ссылку, потому что нового идентификатора сеанса. Вот почему я хочу установить значение переменной сеанса, используя Global.asax в функции запуска сеанса.

void Session_Start(object sender, EventArgs e)
    {
       session["uname"]=here;
    }

Но здесь, на странице Global.asax, я не могу получить доступ к каким-либо значениям со своей страницы входа.. Основная проблема заключается в доступе к любому значению в global.asax из кода позади. Как я могу решить эту проблему......Помогите пожалуйста......Заранее благодарен...... ........

  • Вам следует взглянуть на сохранение информации на уровне страницы каким-либо другим способом вместо доступа к элементу управления в Global.asax. Кроме того, могу ли я спросить, почему вам нужно каждый раз заново генерировать идентификатор сеанса? rikitikitik 19.07.2012

global-asax

Ответы

Ответ 1 · Community

Во-первых, не пишите бизнес-логику в Global.asax. Я хочу указать вам на 3 основные вещи:

  1. Когда вызывается session_start()
  2. Как поддерживаются сеансы
  3. Где вы должны установить свои переменные сеанса.

Для следующих сведений я предполагаю, что у вас есть login.aspx, login.aspx.cs:

Как вы знаете, HTTP - это протокол без сохранения состояния, поэтому каждый запрос - это новый запрос. Таким образом, для каждого запроса будет выполняться session_start().

Когда пользователь запрашивает ресурс в первый раз, будет сгенерирован уникальный сеанс, и клиенту будет отправлен файл cookie, содержащий идентификатор сеанса.

Для любого дальнейшего запроса от пользователя HTTP-клиент передаст файл cookie на сервер, чтобы сервер мог отслеживать пользователя. Вот как работает сессия.


Теперь давайте перейдем к вашему коду, который вы устанавливаете Session["uname"] в session_start() Gloabl.asax, имейте в виду, что Globlax.asax вызывается до начала жизненного цикла страницы, поэтому он не имеет доступа к данные страницы.

Вместо этого вы должны установить сеанс ["uname"] в файле login.aspx.cs. Здесь проверьте правильность учетных данных пользователя:
установите Session["uname"]=value.

Теперь для каждого другого запроса Session["uname"] для этого пользователя будет доступен. И вы также можете получить/обновить значения в session_start() Global.asax.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы