Является ли in-process единственным способом, которым классический ASP может хранить состояние сеанса? - PullRequest
6 голосов
/ 10 июля 2009

Я знаю, что это простой вопрос, но я не могу вытащить его из шума Google. Я знаю, что .NET может использовать службу состояния сеанса или базу данных SQL для поддержки своего состояния сеанса, но я не знаю, предлагает ли ASP какие-либо внепроцессные опции для его сохранения. Есть ли у него какие-либо проблемы, или я застрял с потерей переменных сеанса в приложениях ASP, когда сервер с балансировкой нагрузки отключен?

Ответы [ 2 ]

5 голосов
/ 10 июля 2009

Да, только в памяти

От MSDN Полный текст статьи

Реализация ASP

Собственный сеанс ASP может хранить только данные сеанса в памяти. Чтобы сохранить данные сеанса на SQL Server, пользовательский COM-объект Microsoft® Visual Basic® 6.0 записывается для управления состоянием сеанса вместо использования собственного объекта сеанса. Этот COM-объект будет создаваться в начале каждого веб-запроса и перезагружать данные сеанса с SQL Server. По завершении сценария ASP этот объект будет прерван, а состояние сеанса будет сохранено обратно на SQL Server.

Основная цель объекта COM-сеанса Visual Basic 6 - предоставить доступ к внутренним объектам Microsoft® Internet Information Server. Объект COM-сеанса Visual Basic 6.0 использует класс mySession сборки SessionUtility для хранения состояния сеанса и класс SessionPersistence от SessionUtility для загрузки и сохранения данных сеанса с SQL Server. Классы mySession и SessionPersistence предоставляются в виде объектов COM с помощью утилиты regasm.exe. Утилита regasm.exe может зарегистрировать и создать библиотеку типов для COM-клиента для использования классов Framework.

Информация о состоянии сеанса перезагружается во время строительства объекта. Конструктор (class_initialize) сначала извлекает cookie-файл сеанса, время ожидания сеанса (SessionTimeOut) и строку подключения к базе данных (SessionDSN) из объекта Application и создает экземпляр класса mySession для хранения данных сеанса. Затем конструктор попытается перезагрузить данные сеанса из SQL Server с указанным файлом cookie. Если в SQL Server нет информации о сеансе или истек срок сеанса, будет создан новый файл cookie. Если сервер SQL возвращает данные состояния сеанса, состояние сеанса будет сохранено в объекте mySession.

4 голосов
/ 10 июля 2009

Больше ничего не встроено, хотя в ASP Classic довольно просто создать собственную систему управления сеансами. Простейшая форма - это таблица в БД, подобная следующей:

SessionID int PK, Текстовые поля, Текст значений, Срок действия истекает

Придумайте какой-нибудь кодировщик / декодер CSV для полей и значений и заполните коллекцию на каждой странице. Затем сохраните его после запуска страницы и обновите время истечения. Затем просто проследите, чтобы cookie отслеживал идентификатор сеанса или передавал его в строке запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...