Я расследую ошибку в моем сайте MVC3 / .NET 4, которая работает на IIS7.5 со встроенным конвейером, которая проявляется только при доступе через IE6.
Процесс в псевдо:
- Браузер запрашивает страницу А; наборы серверов
значение Session [] и отвечает
страница.
- Введите данные на странице A и
http отправьте форму назад.
- Сервер пытается получить значение из сессии []
ранее установлен в (1), но возвращает
null >> но только в IE6, 8 (.
В IE7, IE8, IE9, Firefox 3.6, Safari 5.0.3, Chrome 10 один и тот же код работает без изменений.
В своем коде global.asax я добавил обработчик Session_Start и заметил странное поведение.
В IE6 этот обработчик запускается при каждом запросе НО значение Session.SessionID остается неизменным. Все остальные браузеры, упомянутые выше, запускают этот обработчик только при первом запросе. Таким образом, для IE6, даже если идентификатор сеанса один и тот же при каждом вызове, может показаться, что тот факт, что он «запускает» новый сеанс, похоже, приводит к очистке данных для идентификатора сеанса и, следовательно, повторному запуску нулевое значение.
Одна из моих теорий заключалась в том, что из-за того, что некоторые элементы на странице (изображения и т. Д.) Будут доступны с помощью HTTP, а сама страница - HTTPS, возможно, именно поэтому IE6 вызывает такое поведение (возможно, новый сеанс для протокола?), Но я обратился от кода, который заставил HTTPS использоваться на рассматриваемой странице, поэтому все запросы будут HTTP. К сожалению, такое же поведение все еще наблюдается в IE6.
После большого количества поисков в Google я обнаружил, что такие вещи, как подчеркивание в домене, могут вызвать это (никаких подчеркиваний в моем нет), убедитесь, что IE6 принимает cookie-файлы (моя тестовая ВМ была настроена как принимающая все сеансовые cookie-файлы).
Наконец, в последней попытке рва:
- Я включил все настройки конфиденциальности и безопасности, которые я мог найти в IE6, до минимума, который позволил бы мне
- Я добавил свой тестовый сайт (http:// / MyApp) в список доверенных сайтов
- Очистка временных интернет-файлов и файлов cookie
Тем не менее я получаю ту же проблему. Я подумал о способе исправить это, в котором не используется Session для этого случая, но я бы не стал вносить изменения из-за IE6, когда он работает во всех других браузерах, включая более поздние версии IE.
Редактировать: Некоторое дальнейшее тестирование на другой странице и при доступе через IE6 значение сеанса корректно восстанавливается после сохранения путем доступа к другой странице. Более конкретно:
Рабочая страница - Поиск:
- сделать поиск, результаты отображаются и
критерии хранятся в сеансе.
- Нажмите на один из результатов, чтобы просмотреть его, страница сведений получает критерии для построения строки запроса для цепочки ссылок.
Failing Page - 2 этапа входа в систему:
- Перейдите на страницу входа в 1-й этап, введите имя пользователя и пароль, при условии, что правильно сохранено зашифрованное значение файла cookie только для http с именем пользователя в.
- Перенаправить на страницу входа 2-го этапа, сохранить 3 значения индекса (Список ) в «секретном» слове в сеансе
- Введите 3 символа из секретного слова и отправьте сообщение назад.
- Доступ к сеансу для получения 3 значений индекса - ничего не получить.
Причина сбоя очевидна из-за наблюдений, сделанных в более общем описании выше. С каждой минутой это становится все более странным (и более расстраивающим).