2012-04-26 2 views
0

, как в заголовке. Я думал, что переменные сеанса хранятся в памяти, и единственным файлом cookie является файл cookie SessionID. По какой-то причине каждый раз, когда я создаю переменную сеанса, он также создает файл cookie с тем же именем. Это нормальное поведение?Создание переменной сеанса автоматически создает файл cookie

Код:

HttpContext.Current.Session[varName.ToString()] = value; 
+1

Вот несколько [информация] (http://msdn.microsoft.com/en-us/library/ms178581.aspx) относительно состояния сеанса. Прочтите раздел «Cookieless SessionIDs». Похоже, вы можете отключить файлы cookie, если это то, что вы хотите. – Jeremy

+2

Нормально иметь один сеанс cookie. Это не нормально иметь для каждой переменной сеанса cookie с тем же именем. – Aristos

ответ

1

Это нормальное поведение?

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

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

+0

Я думаю, вы неправильно поняли. Создание cookie SessionID является нормальным, но по какой-то причине он также создает файл cookie с тем же именем, что и переменная сеанса. Это тоже нормально? –

+0

Нет, это не нормально, и этого не должно быть. Итак, вы говорите, что после вызова действия контроллера, содержащего строку кода, которую вы указали в своем вопросе, вы создали 2 файла cookie? Кстати, почему вы используете 'HttpContext.Current'? Вы никогда не должны использовать это. Используйте абстракции, которые предоставляет инфраструктура для доступа к сеансу. –

Смежные вопросы