asp.net: данные, помещенные в сеанс, доступны во время работы в Internet Explorer, но не в Opera
Вопрос
это действительно странная вещь - у меня есть веб-сайт, который отлично работает в maxthon (браузер на основе Internet Explorer). я запустил его в опере и обнаружил, что данные, помещенные в словарь сессий на одном сайте, недоступны на другом ... я имею в виду, что у меня есть Welcome.aspx, где при нажатии на следующий код выполняется следующий код: р>
Session["sessionData"] = sessionData;
Response.Redirect("~/Models.aspx");
во время отладки я вижу, что в файле models.aspx сессия пуста при выполнении в опере, но все нормально при выполнении в maxthon. кто-нибудь есть идеи, что может быть не так? потому что я невежественна .. это какая-то оперная вещь или что-то в коде? Р>
Редактировать: я проверил Session.IsNewSession и во время выполнения в maxthon isnewsession имеет значение false, но в опере это правда. кажется, что в опере при переходе на новую страницу он каким-то образом создает новую сессию ...
Решение
Если вы пишете сеанс при первом попадании, то вам следует сделать
Response.Redirect("nextpage.asp", false);
В противном случае он не напишет весь поток ответов, и файл cookie может быть не записан. Вместо этого вы можете выбрать сеансы без кулинарии. Но тогда вы открыты для захвата сессии. Р>
Другие советы
Сеанс ASP.NET хранится с помощью ключа, который сохраняется как cookie в браузере. Проверьте Opera, чтобы узнать, принимает ли он файлы cookie - это необходимо для правильной работы сеанса ASP.NET.
Возможно, у вас отключены файлы cookie в Opera. Сессия работает (если в файле web.config не указаны cookie-файлы), сохраняя идентификатор в cookie-файле. Если brwoser не разрешает доступ, сервер не сможет найти данные