Сессия теряется по новому запросу на классическом сайте ASP - PullRequest
4 голосов
/ 13 сентября 2010

Это нелегко объяснить, но я буду стараться изо всех сил.

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

Эта проблема не характерна для любого браузера, я воспроизвел проблему с Firefox и IE8.

Используя Fiddler, я вижу, что внезапно сервер отправляет новый заголовок Set-Cookie, несмотря на то, что предыдущий сеанс cookie отправляется в запросе.

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

Что я могу попытаться выяснить, проблема?

Сервер является общим хостингом с IIS6, хостинговая компания не слишком дружелюбна, но стоимость перемещения всего в другое место делает вещи такими, как есть.

Спасибо.

Дополнительная информация: При отображении имени машины, предложенного Аароном Д., всегда отображается одно и то же имя, но я сохранил время запуска приложения в global.asa:

Sub Application_OnStart()
    Application("Start") = now()
End Sub

И получается, что при отображении этой информации на тестовой странице она изменяется при изменении обнаруженного сеанса. Таким образом, есть два сервера (с одним и тем же именем), или как-то дважды приложение работает. Возможно ли это?

1 Ответ

2 голосов
/ 13 сентября 2010

У меня есть пара идей, но ничего определенного.

  1. Некоторые запросы через HTTPS и другие через HTTP?Установлены ли файлы cookie для передачи только по защищенным соединениям?

  2. Чередуются ли ваши запросы между поддоменом и основным доменом?Например, некоторые запросы идут на www.foo.com, а другие на foo.com?Файлы cookie не могут быть разделены между ними, если вы не установите домен внутри файла cookie.Это также может произойти с несколькими поддоменами.

  3. Это менее распространенный вариант, но разве компания, размещающая ваш сайт на нескольких серверах, распределяет нагрузку?Вы могли бы сказать это, создав страницу, как указано здесь: http://mentaljetsam.wordpress.com/2008/01/29/classic-asp-code-to-print-current-server-name/
    Если это так, решение состоит в том, чтобы изменить модель состояния сеанса с «InProc» для использования общего ресурса, такого как база данных..

  4. Вы уверены, что он переключает вас между сеансами, а не просто заканчивает сеанс?Может случиться так, что ваше приложение перезапускается (на основе вашего редактирования), и это убивает ваши сеансы, но кэшированный результат заставляет его выглядеть так, как будто он все еще действителен.Можете ли вы попробовать сделать полное обновление и / или проверить результаты с помощью наблюдателя трафика HTTP, такого как Fiddler?Это может помочь вам лучше понять, какие запросы на самом деле передаются по проводам.

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