Потеря информации о сеансе после публикации веб-сайта ASP.NET в IIS

Я новичок в ASP.NET 2.0. Вероятно, это может показаться слишком простой и глупой проблемой для кого-то эксперта в ASP.NET. Но это дает мне бессонные ночи.

По сути, я разработал простой многоязычный веб-сайт с главной страницей и страницами контента, который заполняет части заполнителя контента главной страницы. Приложение отлично работает, когда оно настроено для работы на ASP.NET Development Server 2.0. Но как только я опубликую его для запуска на веб-сервере IIS, он больше не будет работать.:(По трассировке видно, что ни одна из переменных сеанса, которые я использую, не сохраняется и не перенаправляется на соответствующие страницы содержимого.

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

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

Пример: на моей домашней странице есть URL-адрес, который выглядит примерно так: http://localhost/Onlineupdate/Home.aspx? Vers=1.1&lang=fr-FR

Основываясь на вышеуказанном URL, я удаляю и сохраняю переменные vers и lang в переменной Session. Однако они теряются при размещении на IIS.

3 ответа

Решение

Существует около десятка вещей, которые могут привести к потере данных сеанса:

  • Перезапуск IIS
  • Перезапуск пула приложений
    • из-за изменения в web.config
    • из-за изменения чего-либо в каталоге \ bin
    • достигнут предел памяти или ошибка, приводящая к сбросу пула приложений.
    • несколько других возможных причин
  • Ваш хост на самом деле является веб-фермой, и вы используете внутреннюю память, что приведет к проблемам при переключении одного сервера на другой, если вы не используете режим состояния сеанса SQL Server.

Поскольку у нас нет достаточной информации, чтобы точно ответить на то, что происходит в вашей конкретной ситуации, я бы попросил вас начать с чтения, начиная с http://msdn.microsoft.com/en-us/library/ms178581.aspx

Изменить: я нашел эту статью в блоге, которая может быть полезна: http://blogs.msdn.com/b/amenon/archive/2007/08/21/troubleshooting-session-loss.aspx


Следующее не обязательно является частью ответа, но добавлено, чтобы быть полезным.

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

Также я нашел основную проблему, что вы должны инициализировать сессию перед использованием, как:

сессия [ "ID"]="";

и после этого он хорошо работает нормально

Чтобы это не произошло в первую очередь в файле web.config, установите для restartOnExternalChanges значение false. Теперь изменения в файле web.config должны распространяться вручную (это означает, что теперь разработчик отвечает за создание механизма распространения изменений конфигурации).

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

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

Я столкнулся с той же проблемой на моем сайте ASP.NET MVC. и я должен решить это с помощью следующих шагов:

  1. открыть IIS Manager
  2. перейти в пулы приложений
  3. щелкните правой кнопкой мыши пул приложений, связанный с вашим сайтом
  4. нажмите "Расширенные настройки"
  5. установите для параметра "Время простоя (минуты)" значение "20"
  6. установите "Максимальное количество рабочих процессов" на "1"
  7. Нажмите Ok, чтобы закрыть окно

эти шаги решили мою проблему.

Другие вопросы по тегам