Новый сеанс начинается, когда пользователь впервые посещает URL-адрес .NET (например, страницу .aspx, но не HTML-файл или другой статический файл) на вашем сайте.Этот сеанс длится до истечения времени ожидания или до тех пор, пока приложение не будет уничтожено (перезапущено / аварийно завершено / переработано).Время ожидания .NET по умолчанию составляет 20 минут;таким образом, сеанс будет длиться до тех пор, пока пользователь продолжает нажимать на страницы .aspx без перерывов более 20 минут.
В течение этого времени вы можете хранить информацию в объекте Session, который относится к этому пользователю.По сути, это хеш-таблица, которую вы можете заполнить объектами, для которых вы определяете ключи.В вашем случае вы используете Session ["data"], но вы можете использовать любой ключ, который вам действительно нужен.
Однако сеанс и данные, хранящиеся в хеш-таблице Session, очень хрупки (см.все способы он может умереть выше).Вы не должны полагаться на это, чтобы сохранить что-то важное, что не может быть легко восстановлено (например, в Session_Start).Таким образом, он действительно выполняет две роли: поддержание состояния (так что вы знаете, что это все тот же пользователь от страницы к странице);и как пользовательский кеш, где вы можете хранить данные в памяти для более быстрого выполнения действий.
Session_Start запускается один раз за сеанс - по определению.Если вам нужно идентифицировать одного пользователя в нескольких сеансах, вам нужно будет использовать что-то более постоянное, например, установить свой собственный файл cookie с истечением в далеком будущем.Вы можете поместить идентификатор в такой файл cookie, который позволит вам узнать, что это пользователь 12345 (фактически, Session_Start - это просто место для поиска вашего «постоянного» файла cookie и соединения ваших данных об этом существующем пользователе с этим новым сеансом).
И если вы хотите хранить данные о пользователе, который пережил несколько сеансов, вам придется хранить его где-то более постоянным - база данных является наиболее очевидным решением.Когда они возвращаются, вы можете кэшировать некоторые из этих данных в хеш-таблице Session - и Session_Start - это просто место для этого.Надеюсь, это поможет.