Открытие нового окна создать новую сессию - PullRequest
4 голосов
/ 12 декабря 2011

Мы обновляем веб-приложение с Windows XP с Internet Explorer 6 до Windows 7 с Internet Explorer 9.

Кроме того, внутри приложения WPF используется объект веб-браузера.

Теперь у нас странное поведение: при открытии окна с URL-адресом (с инструкцией, подобной window.open (url)) сеанс ASP «теряется», а новое окно работает с новым сеансом с нуля.

Я решил эту проблему, избегая бесполезного открытия окон, и вместо этого я изменяю местоположение текущего окна.Но я хотел бы понять, почему это поведение!

У вас есть какие-либо подсказки?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 12 декабря 2011

Это может быть вызвано простым изменением вашего доменного имени, если вы работаете на www.yoursite.com, но окно указывает на yoursite.com, тогда будет создан новый сеанс.Гадкий, чтобы поймать, так что следите за этим.

Кроме того, на странице может присутствовать некоторый отладочный код, это может привести к сильным царапинам, например, к очистке переменной сеанса для тестирования.Что-то еще, чтобы проверить, хотя далеко, но вы никогда не знаете.

2 голосов
/ 13 декабря 2011

Если ваша навигация идет в один домен, то другой причиной этого может быть переключение процессов.Начиная с IE8 IE "chrome" и содержимое вкладок были разделены на два процесса.Кроме того, IE может создавать несколько процессов контента для контента в разных окнах и вкладках.

Если в вашем приложении размещен веб-браузер, который затем запускает полное окно IE, есть вероятность, что ваш новый URL запрашивается другим процессом(iexpore.exe) не ваш процесс приложений.В результате запрос не имеет доступа к куки-файлам сеанса, поэтому сеанс выглядит «потерянным».

(Стоит отметить, что несколько экземпляров процесса iexplore.exe в одном и том же дереве процессов могут обмениваться файлами cookie сеанса друг с другом).

1 голос
/ 20 декабря 2011

Я думаю, что вы, вероятно, испытываете те же проблемы, что и этот ответ адресов.По сути, это, вероятно, связано с ошибками зоны безопасности в IE на конкретном компьютере, который вы используете.Как отметили другие, и я могу повторить, сеансы переносятся в другие окна IE (6, 7, 8, 9), открытые javascript, если домен не меняется.

Удачи!

0 голосов
/ 12 декабря 2011

Некоторые справочные материалы, которые могут вам помочь:

Когда выоткройте новое окно, используя JavaScript в качестве IE по умолчанию, создайте новое окно, а также не тот же сеанс и историю.Если вы получите последний реферер из нового окна javascript, он будет пустым в основных браузерах.

И вы можете сохранить историю сеансов, если ваша функция window.open запущена внутри объекта привязки:

<script>
function windowOpen() { window.open("my_page.asp","_blank"); };
</script>
<a href="javascript:windowOpen();">my link</a>
...