куки и объект состояния сеанса - PullRequest
0 голосов
/ 29 марта 2011

Во всяком случае, моя главная задача - использование сессииУ меня всегда было впечатление, что если вы используете следующие утверждения (не то, что я бы):

Session["newVar1"] = "a new session variable";
Session["newVar2"] = "a new session variable";
Session["newVar3"] = aLargeVariableThatHoldsLotsOfData;

Вы бы создали 3 новых сеансовых куки, которые содержат определенное значение.Но я думаю, что моя asp book указывает на то, что вы фактически создадите 3 новые переменные в своем объекте состояния сеанса, а ASP передаст только уникальный идентификатор сеанса (как файл cookie?) Вответ и получит этот идентификатор при следующем запросе и свяжет этот идентификатор с вашим объектом состояния сеанса (который IIS хранит в памяти ..?):

... он создает объект состояния сеансакоторый содержит уникальный идентификатор сеанса для каждого сеанса пользователя.Этот идентификатор передается обратно в браузер как часть ответа, а затем возвращается на сервер со следующим запросом.Затем ASP.NET может использовать идентификатор сеанса для получения объекта состояния сеанса, связанного с запросом.

Это не кажется идеальным для веб-сайта с большим объемом трафика.Сервер, который хранит и поддерживает тысячи и тысячи экземпляров состояния сеанса для каждого веб-сайта, выглядит слишком большой перегрузкой.Я пытаюсь понять, что происходит самостоятельно, но у меня возникли проблемы ... Я не могу найти файлы cookie своего сайта нигде на моей машине (IE / windows xp).Я проверил C:\Documents and Settings\nicholasr\Cookies\ и C:\Documents and Settings\nicholasr\Local Settings\Temporary Internet Files, которые, согласно этого ответа Yahoo , также сохраняют куки IE.Я использую аутентификацию тикета в своем приложении, которое хранит куки-файл аутентификации на клиенте, поэтому куки с моего сайта должны быть где-тоНаверное, я спрашиваю:1) Если кто-то может помочь мне понять, как Session State работает за кулисами2) Где IE хранит куки моего сайта?> <</p>

1 Ответ

4 голосов
/ 29 марта 2011

Существует один файл cookie сеанса, который представляет GUID.Сами значения сеанса хранятся на сервере.Поэтому, когда вы пишете:

Session["newVar1"] = "a new session variable";
Session["newVar2"] = "a new session variable";
Session["newVar3"] = aLargeVariableThatHoldsLotsOfData;

, файл cookie HTTP, который может выглядеть так, отправляется клиенту.Этот файл cookie содержит только идентификатор, а не фактические значения.Фактические значения могут храниться в памяти сервера, в отдельном процессе или даже в SQL Server, в зависимости от <sessionState mode="" в web.config.Затем, когда позже клиент отправит еще один запрос, он отправит этот cookie-идентификатор на сервер, и с заданным идентификатором сервер получит фактические значения.

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

...