Управление состоянием сеанса - PullRequest
2 голосов
/ 16 декабря 2008

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

Ответы [ 4 ]

4 голосов
/ 16 декабря 2008

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

3 голосов
/ 16 декабря 2008

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

2 голосов
/ 16 декабря 2008

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

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

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

1 голос
/ 16 декабря 2008

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

...