У нас есть приложение ASP.NET, которое использует Forms Auth. Когда пользователи регистрируются, генерируются файлы cookie идентификатора сеанса и билет Forms Auth (хранятся как файлы cookie). Это файлы cookie сеанса, а не постоянные файлы cookie. Преднамеренно и желательно, чтобы при закрытии браузера пользователь фактически вышел из системы.
Как только пользователь входит в систему, появляется новое окно с помощью window.open('location here');
. Открываемая страница - это фактически рабочее пространство, в котором пользователь работает на протяжении всей своей сессии. На этой странице также используются другие всплывающие окна.
В последнее время у нас было несколько клиентов (все из которых использовались последние версии IE8), жалуясь, что при входе в систему первоначальное всплывающее окно возвращает их на экран журнала, а не на главную страницу. В качестве альтернативы, пользователи иногда могут войти в систему, попасть на домашнюю страницу (опять же, находится в новом всплывающем окне), и все это кажется прекрасным, пока не будут созданы дополнительные всплывающие окна, где он начнет перенаправление их на экран журнала еще раз.
При попытке устранить эту проблему я использовал старый добрый Fiddler. Когда проблема начинает проявляться, я заметил, что браузер не отправляет cookie сеанса идентификатора сеанса ASP.NET или файл cookie сеанса Forms Auth, даже несмотря на то, что ответ на журнал POST явно отбрасывает эти файлы cookie.
Что более странно, если я CTRL + N, чтобы открыть новое окно из всплывающего окна, в котором отсутствуют файлы cookie сеанса, затем вручную введите URL-адрес на домашнюю страницу, эти файлы cookie волшебным образом появятся снова. Однако последующие вызовы window.open();
будут по-прежнему нарушаться, не отправляя куки сессии и не вызывая пользователя на экран входа в систему.
Важно отметить, что иногда, по-видимому, нет веской причины, те же самые пользователи могут внезапно войти в систему и работать нормально какое-то время, а затем возвращаются к сломанным.
Теперь я убедился, что нет надстроек браузера, плагинов, панелей инструментов и т.д. Я добавил наш сайт в качестве надежного сайта и отключил параметры безопасности до Low, я изменил политику конфиденциальности Cookie, чтобы "принять все" и даже отключил автоматические параметры политики, вручную заставляя его принимать все и включать файлы cookie сеанса. Похоже, что это не влияет на него.
Также обратите внимание, что веб-приложение находится на одном сервере. Балансировка нагрузки, веб-сады, серверные фермы, кластеры и т.д. Сервер не находится за сервером ISA, но отличается от этого довольно простым.
Я искал несколько дней и не нашел ничего действенного. Черт, иногда я даже не могу воспроизвести его надежно. Я нашел несколько ссылок на людей, имеющих эту же проблему, но они, похоже, ссылаются на проблему, которая якобы была исправлена в бета-версии или RC-релизе (пример: IE8 теряет файлы cookie при открытии новое окно после перенаправления). Это версии версий IE с обновленными исправлениями.
Я знаю, что я могу попытаться установить постоянные файлы cookie вместо cookie сеанса. Однако это имеет серьезные последствия для безопасности для нашего приложения.
Update
Кажется, что проблема автоматически исчезает, когда пользователь добавляется как локальный администратор на машине. Только время покажет, влияет ли это изменение навсегда (и положительно) на эту проблему.
Время, чтобы вывести ProcMon и посмотреть, есть ли проблема с доступом к ресурсам.
Обновление # 2
Кажется, что есть несколько углов к тому, что кажется особой проблемой. Я давно уже сообщал о том, что, помогая, пользователь, возможно, помог местному администратору. И это было для многих пользователей. Конечно, это не совсем решение, но это позволило нам пошевелиться.
Затем больше пользователей начали сообщать об этой проблеме, и исправление администратора не помогло. Похоже, что пользователи были в основном Win7, но Vista также пострадала. Похоже, что они также были 64-битными установками.
Настройка TabProcGrowth на 0 или 1 (либо работало), как предложено некоторыми членами ниже, похоже, в значительной степени устраняет проблему. Итак, я собираюсь перенести принятый ответ первому человеку, который предположил, что это значительно повлияло.
Это была невероятно трудная проблема, которую пытались решить, поскольку трудно воспроизвести и часто встречаться с пользователями, с которыми у меня нет прямой связи, или к тому времени, когда я доберусь до них, это, похоже, не за работой. Все, что я могу сказать, - это что-то не так с функцией слияния сеансов, но у меня нет большого количества данных для подачи в Microsoft, чтобы найти постоянное исправление.