Управление состоянием сеанса

У меня есть необходимость поддерживать состояние сеанса в базе данных. Однако я не могу получить доступ к базе данных напрямую с веб-сервера. Веб-сервер связывается с сервером приложений, который, в свою очередь, имеет доступ к базе данных.
Есть ли способ настроить это? Или пользовательский компонент должен быть написан.
Причиной такой настройки является обеспечение балансировки нагрузки и возможность перенаправления сеанса пользователя с одного сервера на другой.

4 ответа

Используйте службу состояния сеанса ASP.NET. Вы можете запустить эту службу прямо на своем сервере приложений - см. Примечания по MSDN здесь - и настроить все ваши веб-хосты для хранения их состояния сеанса пользователя на этом центральном сервере состояний. Служба состояния сеанса ASP.NET хранит сеансы в памяти на сервере приложений и не требует базы данных SQL Server.

Обратите внимание, что если вы считаете, что вам нужно хранить сеансы в базе данных, поскольку вы используете более одного веб-сервера, это не так: вы можете использовать StateServer. Это означает, что вы включаете службу состояния сеанса на одном компьютере и настраиваете этот компьютер в web.config всех ваших веб-серверов, чтобы они все использовали один и тот же компьютер для состояния.

Ваш единственный вариант - создать пользовательский компонент.

Их действительно не так сложно сделать, так как единственное, что вам нужно, это чтобы браузер отправил вам значение из файла cookie или строки запроса. То, что хранится, это просто пары имя-значение.

см. http://msdn.microsoft.com/en-us/library/aa479034.aspx

Вы можете написать собственный провайдер SessionState.. Я думаю, что это единственный способ... Посмотрите на MSDN здесь.

Другие вопросы по тегам