Проблема совместного использования сеанса IE8 в приложении ASP .Net - PullRequest
1 голос
/ 13 ноября 2009

У меня есть приложение ASP .Net, которое отлично работает в IE 7.0, но из-за совместного использования сеанса в IE 8.0 (также в случае нового окна) приложение дает неожиданное поведение, так как сеанс может быть изменен другим окном.

Несколько быстрых фактов

Я знаю опцию -NoCache и открываю пункт меню Файл нового сеанса в IE 8

Я просто хотел знать, есть ли возможность отключить это поведение совместного использования сеанса в новом окне через код ASP .Net (через браузер) или любое другое решение

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

Ответы [ 2 ]

1 голос
/ 13 ноября 2009

Общий доступ к сеансам всегда был не уникальным для Internet Explorer 8. Новые вкладки, Ctrl-N в любом браузере (IE5,6,7 FF1,2,3 OP6,7,8,9,10 и т. Д.), Разделяет данные сеанса глобального процесса. Он только что получил причудливое имя, потому что теперь вкладки могут иметь несколько процессов на компьютере (не новых), но все равно будут «делиться» сессиями. И это своего рода "новый".

Хорошо, что вы знаете об этом, но это не так хорошо, если вы пытаетесь отобрать у пользователя этот «опыт» или «функцию». Если вы хотите этого, я бы вместо этого включил решения JScript / JavaScript и выдал предупреждение, когда пользователь пытается открыть несколько сеансов, но я сомневаюсь, что вы получите хорошее решение «запретить совместное использование сеансов через окна». Даже известные банки уже отказались от этого (им никогда не нравилось это деление сессии)

С точки зрения дизайна: на стороне сервера это довольно просто. Просто всегда предполагайте, что сессия изменилась. Это может, например, означать, что на одном экране пользователь не вошел в систему, на другом он есть. Это нормально. Если он обновится или перейдет на другую страницу, вы покажете ему правильный вид: вошел в систему на той же странице.

Просто убедитесь, что вы проверяете недействительные данные в результате измененного сеанса в другом окне (т.е. запрос). Но это общий совет: будьте либеральными в том, что вы принимаете, но убедитесь, что вы проверяете любой вклад.

РЕДАКТИРОВАТЬ: На дополнительных сессиях: просто относиться к ним так. Всегда было возможно, чтобы пользователи открывали более одного сеанса для одного и того же пользователя (два разных браузера). Как всегда можно было изменить сеанс через другую вкладку, окно и т. Д. Того же браузера.


На стороне «решения»: настройте сеанс как cookie-файл. Это помещает сеанс в параметры запроса URL. Любое старое окно, не имеющее SESSIONID в URL, не будет считаться частью сеанса. Однако появляется предупреждение: этот подход в конечном итоге вызывает больше проблем, чем решает (т. Е. Теперь вам нужно беспокоиться о и без запросов сеанса от того же пользователя, того же браузера, того же ip и все еще можно «скопировать» сеанс, скопировав URL или вкладку).

0 голосов
/ 13 ноября 2009

Перемещение части вашей информации из сеанса в ViewState может помочь вам решить проблемы , которые у вас возникают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...