Почему я теряю переменную сеанса через 5 минут? - PullRequest
1 голос
/ 03 ноября 2008

У меня есть веб-страница, на которой пользователь выбирает компанию, и поэтому я сохраняю название компании в памяти, хотя сеанс, но когда я перехожу на следующую страницу, сеанс длится всего 5 минут? Любая причина, почему и как я могу это исправить, я продлил состояние Session в Web.config, но это не сработало.

Пример: Session ("CompanyName") = "Технология байтов"

В моем web.config у меня есть: timeout = "40" />

Я перехожу из Default.aspx в CompanyDetail.aspx с моей сессией («CompanyName»)

Но если я позволю программе бездействовать в CompanyDetail.aspx, я потеряю состояние сеанса.

Есть идеи?

С уважением Этьен

Ответы [ 9 ]

6 голосов
/ 03 ноября 2008

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

в этом случае вам необходимо сохранить сеанс в БД или избегать его использования: вы не можете быть уверены, что один и тот же сервер будет обслуживать одного и того же пользователя каждый раз, когда он выполняет обратную передачу, и если пользователь переходит с сервера «А» сервер "B" в двух разных постах ... переменные сеанса утеряны.

попробуйте поискать в Google по запросу "база данных сессионного состояния", вы найдете множество вещей по этому поводу.

надеюсь, это поможет

1009 * Andrea *

4 голосов
/ 03 ноября 2008

некоторые вопросы:

  • время ожидания всегда одинаково? 5 минут?
  • Ваш сайт работает в ферме серверов с балансировкой нагрузки? с более чем одним интерфейсным сервером?
  • что вы говорите в своем web.confing относительно сессий и состояния сеанса?
3 голосов
/ 03 ноября 2008

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

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

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

Тайм-аут сеанса может быть жестко установлен в IIS провайдером хоста, и наиболее вероятным виновником является то, что они установили его на 5 минут.

Позвоните своему хост-провайдеру, спросите его, каковы их настройки сеанса IIS, и перейдите оттуда.

1 голос
/ 03 ноября 2008

Если это происходит всегда через 5 минут, тогда проверьте web.config для настроек сеанса и проверьте IIS: веб-сайт / Свойства / ASP.NET, нажмите «Изменить конфигурацию», выберите вкладку «Управление состоянием» и проверьте настройки сеанса.

1 голос
/ 03 ноября 2008

В IIS перейдите в свойства своего веб-сайта, перейдите на вкладку «Домашний каталог» и нажмите кнопку «Конфигурация». Здесь щелкните вкладку параметров и проверьте время ожидания сеанса там. Я почти уверен, что это влияет только на классический ASP, но я не уверен на 100%.

0 голосов
/ 05 января 2009

Я решил отказаться от использования переменных сеанса и пошел с Query Strings !! Гораздо лучше !!

0 голосов
/ 04 ноября 2008

спасибо всем за всю информацию. Компания, размещающая мой сайт, только что продлила время работы пула приложений, и это сработало!

Спасибо Etienne http://www.erate.co.za

0 голосов
/ 03 ноября 2008

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

0 голосов
/ 03 ноября 2008

Может ли быть какой-либо антивирус на сервере, который заставляет веб-приложение переустанавливаться каждые 5 минут, когда среда выполнения ASP.NET думает, что изменились либо двоичные файлы, либо файл web.config? это также возможно.

...