2013-11-18 3 views
0

У нас есть корзина для покупок, запущенная на нашем тестовом сервере, и возникает проблема, когда сеанс тележки распределяется между двумя или более пользователями на двух разных машинах. В приложении корзина пользователя загружается из базы данных и сохраняется в сеансе. Когда пользователь получает страницу заказа, его предыдущая позиция корзины загружается из сохраненной сессии, и любые новые изменения в корзине сохраняются в db, а также в сеансе тележки. Проблема, с которой мы сталкиваемся, заключается в том, что, если есть два или более пользователей, использующих приложение, и если они добавляют какие-либо предметы в корзину, пользователь, добавив элемент корзины, будет случайно отображен в корзину другого пользователя. Если пользователь обновляет страницу (иногда более одного раза) или переходит на другую страницу и возвращается на страницу заказа, он снова может увидеть свою тележку. Как я упоминал ранее, тележка становится сохраненной в сеансе, и похоже, что сеанс делится каждый раз в то время. Это устаревшее приложение ASP.net и работает в IIS6.Сессия делится между двумя машинами

Кто-нибудь сталкивался с этим вопросом раньше? Любые предложения по его исправлению? Спасибо. Sanjeev

Обновление: вот в чем проблема: страница была загружена в течение 10 секунд через этот код на странице aspx. <% @ OutputCache Duration = "10" VaryByParam = "none"%> Мы вытащили его, и он работает так, как должен.

+0

Вы можете проверить these..1. используйте session.abandon после сохранения состояния сеанса в db, это подтвердит закрытие сеанса. 2. Положите срок действия на ваш файл cookie ..Response.Cookies ["userName"]. Expires = DateTime.Now.AddDays (1); Надеюсь, это поможет – foxtrotZulu

+0

Это звучит необычно. Вы имеете в виду, что пользователи находятся на разных компьютерах (клиентах) или у вас есть сценарий веб-фермы? Если последний, вы не можете использовать режим InProc Session-State. –

+0

@RobKent веб-приложение работает на двух веб-серверах, однако, когда пользователь обращается к нему, он делает это через URL-адрес баланса нагрузки. Мы используем режим состояния InProc Session. foxtroutZulu, не отказывается от функции, разрушает всю сессию, однако мне понадобится сеанс для моей следующей страницы, так что это может не сработать. – sanjeev40084

ответ