Почему я теряю переменную сеанса через 5 минут?
-
06-07-2019 - |
Вопрос
У меня есть веб-страница, на которой пользователь выбирает компанию, и при этом я сохраняю название компании в памяти во время сеанса, но когда я перехожу на следующую страницу, сеанс длится всего около 5 минут?По любой причине и как я могу это исправить: я расширил состояние сеанса в Web.config, но это не сработало.
Пример:Session("CompanyName") = "Bytes Technology"
В моем web.config у меня есть:таймаут="40" />
Я перехожу с Default.aspx на CompanyDetail.aspx с помощью моего сеанса («CompanyName»)
Но если я оставлю программу бездействующей в CompanyDetail.aspx, я потеряю состояние сеанса.
Есть идеи?
С уважением Этьен
Решение 8
спасибо всем за всю информацию.Компания, размещающая мой сайт, только что продлила время пула приложений, и это сработало!
Спасибо Этьенhttp://www.erate.co.za
Другие советы
Из вашего комментария я вижу, что вы думаете, что ваш сайт находится в ферме серверов с балансировкой нагрузки.
в этом случае вам нужно сохранить сеанс в базе данных или избегать его использования:вы не можете быть уверены, что один и тот же сервер будет обслуживать одного и того же пользователя каждый раз, когда он выполняет обратную передачу, и если пользователь переходит с сервера «А» на сервер «Б» в двух разных сообщениях...ваши переменные сеанса потеряны.
попробуйте поискать в Google «базу данных состояния сеанса», вы найдете массу информации по этому поводу.
надеюсь это поможет
Андреа
некоторые вопросы:
- время тайм-аута всегда одинаковое?5 минут?
- ваш сайт работает на ферме серверов с балансировкой нагрузки?с более чем одним интерфейсным сервером?
- что вы говорите в своем web.confing о сеансах и состоянии сеанса?
Держу пари, что вы не используете ферму с балансировкой нагрузки, а фактически используете общий хостинг.
В ферме с балансировкой нагрузки ваш код развертывается на нескольких серверах, и если у вас отключены закрепленные сеансы, пользователь будет использовать сервер с наименьшей нагрузкой при каждом запросе.
Поскольку вы используете сторонний хостинг, я сильно сомневаюсь, что вы это делаете.
Тайм-аут сеанса может быть жестко установлен в IIS хост-провайдером, и наиболее вероятной причиной является то, что он установил это значение на 5 минут.
Позвоните своему хост-провайдеру, спросите его, какие у него настройки сеанса IIS, и приступайте к делу.
В IIS зайдите в свойства вашего веб-сайта, перейдите на вкладку «Домашний каталог» и нажмите кнопку «Конфигурация».Здесь перейдите на вкладку «Параметры» и проверьте там время ожидания сеанса.Я почти уверен, что это влияет только на классический ASP, но я не уверен на 100%.
Если это происходит всегда через 5 минут, проверьте web.config на предмет настроек сеанса и проверьте IIS:веб-сайт/Свойства/ASP.NET, нажмите «Изменить конфигурацию», выберите вкладку «Управление состоянием» и проверьте настройки сеанса.
может ли на сервере быть какой-нибудь антивирус, который заставляет веб-приложение перезагружаться каждые 5 минут, при этом среда выполнения ASP.NET думает, что либо двоичные файлы, либо web.config изменились?это тоже возможно.
Другая идея — поместить имя машины в комментарий на странице и посмотреть, меняется ли оно от страницы к странице, просто чтобы подтвердить изменение сервера, обрабатывающего запрос.
Я решил отказаться от использования переменных сеанса и остановился на строках запроса!Намного лучше!!