Учебники ASP

ГЛАВНАЯ АСП

Учебник по WP

Введение в веб-страницы Веб-страницы Razor Макет веб-страниц Папки веб-страниц Веб-страницы Глобальные Формы веб-страниц Объекты веб-страниц Файлы веб-страниц Базы данных веб-страниц Помощники веб-страниц Веб-страницы Графики веб-страниц Электронная почта веб-страниц Безопасность веб-страниц Публикация веб-страниц Примеры веб-страниц Классы веб-страниц

Бритва ASP.NET

Введение в бритву Синтаксис бритвы Переменные Razor C# Циклы Razor C# Логика Razor C# Переменные Razor VB Циклы Razor VB Логика Бритвы В.Б.

АСП Классик

Введение в ASP Синтаксис ASP ASP-переменные Процедуры ASP Условия ASP Зацикливание ASP ASP-формы Файлы cookie ASP ASP-сеанс ASP-приложение ASP #include ASP Global.asa АСП АЯКС Электронная почта ASP Примеры ASP

Справочник ASP

Функции ASP VB Ключевые слова ASP VB Ответ ASP ASP-запрос ASP-приложение ASP-сеанс ASP-сервер Ошибка ASP Файловая система ASP Текстовый поток ASP ASP-диск ASP-файл Папка ASP Словарь АСП ASP AdRotator ASP BrowserCap Связывание контента ASP Ротатор контента ASP Быстрая ссылка ASP

Учебник по ADO

Введение в ADO АДО Коннект Набор записей ADO Дисплей АДО ADO-запрос Сортировка ADO ADO Добавить Обновление ADO АДО Удалить Демонстрация ADO Ускорение ADO

Объекты АДО

Команда АДО ADO-соединение Ошибка ADO Поле ADO ADO-параметр Свойство АДО ADO-запись Набор записей ADO ADO-поток Типы данных ADO

Объект сеанса ASP


Объект Session хранит информацию или изменяет настройки для пользовательского сеанса.


Объект сеанса

Когда вы работаете с приложением на своем компьютере, вы открываете его, вносите какие-то изменения, а затем закрываете его. Это очень похоже на сессию. Компьютер знает, кто вы. Он знает, когда вы открываете приложение и когда закрываете его. Однако в Интернете есть одна проблема: веб-сервер не знает, кто вы и чем занимаетесь, поскольку HTTP-адрес не поддерживает состояние.

ASP решает эту проблему, создавая уникальный файл cookie для каждого пользователя. Файл cookie отправляется на компьютер пользователя и содержит информацию, идентифицирующую пользователя. Этот интерфейс называется объектом Session.

Объект Session хранит информацию или изменяет настройки для пользовательского сеанса.

Переменные, хранящиеся в объекте Session, содержат информацию об одном отдельном пользователе и доступны для всех страниц в одном приложении. Общая информация, хранящаяся в переменных сеанса, — это имя, идентификатор и предпочтения. Сервер создает новый объект Session для каждого нового пользователя и уничтожает объект Session по истечении срока действия сеанса.


Когда начинается сеанс?

Сеанс начинается, когда:

  • Новый пользователь запрашивает файл ASP, а файл Global.asa включает процедуру Session_OnStart.
  • Значение хранится в переменной сеанса
  • Пользователь запрашивает файл ASP, а файл Global.asa использует тег <object> для создания экземпляра объекта с областью действия сеанса.

Когда заканчивается сеанс?

Сеанс завершается, если пользователь не запрашивал и не обновлял страницу в приложении в течение указанного периода. По умолчанию это 20 минут.

Если вы хотите установить интервал времени ожидания, который короче или длиннее значения по умолчанию, используйте свойство Timeout .

В приведенном ниже примере устанавливается интервал тайм-аута в 5 минут:

<%
Session.Timeout=5
%>

Используйте метод Abandon для немедленного завершения сеанса:

<%
Session.Abandon
%>

Примечание . Основная проблема с сеансами заключается в том, КОГДА они должны заканчиваться. Мы не знаем, был ли последний запрос пользователя последним или нет. Поэтому мы не знаем, как долго мы должны поддерживать сеанс «живым». Слишком долгое ожидание бездействующего сеанса расходует ресурсы на сервере, но если сеанс удаляется слишком рано, пользователю приходится начинать все сначала, потому что сервер удалил всю информацию. Найти правильный интервал тайм-аута может быть сложно!

Совет: храните только НЕБОЛЬШИЕ объемы данных в переменных сеанса!



Сохранение и извлечение переменных сеанса

Самое важное в объекте Session — это то, что в нем можно хранить переменные.

В приведенном ниже примере имя пользователя переменной сеанса будет установлено на «Дональд Дак», а возраст переменной сеанса — на «50»:

<%
Session("username")="Donald Duck"
Session("age")=50
%>

Когда значение хранится в переменной сеанса, к нему можно получить доступ с ЛЮБОЙ страницы в приложении ASP:

Welcome <%Response.Write(Session("username"))%>

Строка выше возвращает: «Добро пожаловать, Дональд Дак».

Вы также можете сохранить пользовательские настройки в объекте Session, а затем получить доступ к этим настройкам, чтобы выбрать, какую страницу вернуть пользователю.

В приведенном ниже примере указывается только текстовая версия страницы, если у пользователя низкое разрешение экрана:

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

Удалить переменные сеанса

Коллекция Contents содержит все переменные сеанса.

Можно удалить переменную сеанса с помощью метода Remove.

В приведенном ниже примере переменная сеанса «продажа» удаляется, если значение переменной сеанса «возраст» меньше 18:

<%
If Session.Contents("age")<18 then
  Session.Contents.Remove("sale")
End If
%>

Чтобы удалить все переменные в сеансе, используйте метод RemoveAll:

<%
Session.Contents.RemoveAll()
%>

Цикл по коллекции содержимого

Коллекция Contents содержит все переменные сеанса. Вы можете просмотреть коллекцию Contents, чтобы увидеть, что в ней хранится:

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
  Response.Write(i & "<br>")
Next
%>

Результат:

username
age

Если вы не знаете количество элементов в коллекции Contents, вы можете использовать свойство Count:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
Next
%>

Результат:

Session variables: 2
Donald Duck
50

Цикл по коллекции StaticObjects

Вы можете просмотреть коллекцию StaticObjects, чтобы увидеть значения всех объектов, хранящихся в объекте Session:

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br>")
Next
%>