ASP.NET и сеансы - новый экземпляр браузера и новое окно браузера

StackOverflow https://stackoverflow.com/questions/303859

Вопрос

Я надеюсь, что кто-то сможет прояснить для меня это поведение и объяснить, как ASP.NET решает, когда рассматривать что-то вроде нового сеанса.

A) В Internet Explorer я загружаю рассматриваемый сайт ASP.NET. Начинается новая сессия.
Б) Если я зайду в меню Файл - Новое окно ... оно останется в том же сеансе.
C) Если я запускаю новый экземпляр Internet Explorer и загружаю ту же страницу, начинается новый сеанс.

Меня смущает шаг C. Я ожидаю, что это будет тот же сеанс, основанный на моем удаленном IP-адресе.
Что делает IIS / ASP.NET, чтобы решить, что это новый сеанс? Это смотрит на мой удаленный порт, который использует новый экземпляр IE? Когда вы открываете новое окно с File - New, оно использует тот же удаленный порт, что и родительский.

Это было полезно?

Решение

Сеансы в IIS / ASP.NET основаны на файлах cookie с областью действия сеансов, что означает, что они уничтожаются при закрытии браузера и, по-видимому, не используются в разных процессах Internet Explorer.

Когда вы открываете новое окно браузера с помощью File > В новом окне окно будет обрабатываться тем же процессом, что и первое (то есть тот же iexplorer.exe). Когда вы запускаете IE из меню «Пуск», вы получаете новый процесс, и у вас теперь есть два iexplorer.exe в диспетчере задач. Я думаю, что только IE 7 будет порождать несколько процессов.

В качестве примечания, IE 8 будет иметь один процесс для каждой вкладки / окна, как в Google Chrome. Я не знаю, разделяют ли эти браузеры сеансовые куки-файлы между процессами, но об этом, безусловно, следует помнить при тестировании с использованием одного из этих браузеров.

Другие советы

По умолчанию ASP.NET отслеживает сеансы с помощью файлов cookie. Новый экземпляр IE не имеет файла cookie сеанса, что приводит к новому сеансу. Однако, используя File - > Новое окно из существующего окна IE создаст новое окно с теми же файлами cookie, что и «родительский», что позволит ASP.NET использовать существующий сеанс.

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

Может показаться, что данные сеанса кэшируются для каждого процесса. A) и B) существуют в одном и том же процессе, тогда как запуск нового экземпляра IE будет создавать новый процесс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top