Потеря информации о сеансе после публикации веб-сайта 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. и я должен решить это с помощью следующих шагов:
- открыть IIS Manager
- перейти в пулы приложений
- щелкните правой кнопкой мыши пул приложений, связанный с вашим сайтом
- нажмите "Расширенные настройки"
- установите для параметра "Время простоя (минуты)" значение "20"
- установите "Максимальное количество рабочих процессов" на "1"
- Нажмите Ok, чтобы закрыть окно
эти шаги решили мою проблему.