На моей странице я регенерирую идентификатор сеанса при каждом нажатии кнопки, чтобы перейти на следующую страницу. Я уже сохранил имя пользователя в своей переменной сеанса (session["uname"]=txtusername.text) во время входа в систему. Но когда я регенерирую новый идентификатор сеанса, session["uname"] имеет нулевую ссылку, потому что нового идентификатора сеанса. Вот почему я хочу установить значение переменной сеанса, используя Global.asax в функции запуска сеанса.
void Session_Start(object sender, EventArgs e)
{
session["uname"]=here;
}
Но здесь, на странице Global.asax, я не могу получить доступ к каким-либо значениям со своей страницы входа.. Основная проблема заключается в доступе к любому значению в global.asax из кода позади. Как я могу решить эту проблему......Помогите пожалуйста......Заранее благодарен...... ........
Ответ 1 · Community
Во-первых, не пишите бизнес-логику в Global.asax. Я хочу указать вам на 3 основные вещи:
- Когда вызывается session_start()
- Как поддерживаются сеансы
- Где вы должны установить свои переменные сеанса.
Для следующих сведений я предполагаю, что у вас есть 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.