Программная диагностика ASP.Чистая потеря сеанса из-за повторного использования приложения?

StackOverflow https://stackoverflow.com/questions/401311

  •  03-07-2019
  •  | 
  •  

Вопрос

У нас есть приложение ASP.Net 2.0 (VS2005), которое отлично работает локально, но иногда теряет состояние сеанса при развертывании на удаленном сервере.

Я подозреваю возможную проблему с тем, что IIS повторно запускает приложение и тем самым нарушает состояние сеанса пользователей.Однако сервер является удаленным и не находится под нашим контролем...таким образом, мы не можем просто запустить IIS Admin и проверить настройки приложения.Другой возможной причиной, конечно, было бы отклонение клиентами ASP.По какой-то причине Net session cookie.

(Мы в значительной степени исключили ошибку в нашем коде, потому что это простое приложение, и оно никогда не пытается удалить что-либо из объекта сеанса, но, конечно...это знаменитые последние слова, а?)

Как бы вы диагностировали это программно?

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

Я уверен, что это обычная проблема для ASP.Сетевые разработчики.

Это было полезно?

Решение

Вот пара ссылок, которые могут помочь в устранении неполадок, если вы сможете изменить некоторые настройки:

Ведение журнала событий повторного использования рабочего процесса в IIS 6.0 (IIS 6.0)

Ведение журнала ASP.NET Событий завершения работы приложения

Другие советы

Добавьте некоторый код ведения журнала в метод global.asax Application_Start, и вы сможете увидеть, когда / если ваша потеря вызвана перезапуском приложения (или, по крайней мере, вы увидите, когда запускается сервер, если вы знаете, что сеанс был потерян в то же время, вы знаете своего виновника).

Обходным решением было бы использовать состояние сеанса out of proc (вероятно, оно должно было бы основываться на SQL, если у вас нет контроля над сервером).Это требует небольшой дополнительной работы над вашим кодом, потому что все, что вы храните в сеансе, должно быть сериализуемым, но решает проблему перезапуска приложения, приводящего к потере сеанса.

Службы IIS, настроенные для более чем одного рабочего потока (Web Garden) в пуле приложений, могут привести к потере состояния сеанса.

Я нашел сценарий, в котором сеанс потерян - на странице asp.net для поля текстового поля суммы недопустимые символы, за которым следует извлечение переменной сеанса для других целей.После публикации недопустимого номера выполняется синтаксический анализ через Convert.ToInt32 или double вызывает исключение первой вероятности, но ошибка не отображается в этой строке, Вместо этого сеанс, являющийся нулевым из-за необработанного исключения, показывает ошибку при извлечении сеанса, тем самым вводя в заблуждение отладку...

ПОДСКАЗКА:Протестируйте свою систему на предмет сбоя - это РАЗРУШИТЕЛЬНО..введите достаточно мусора в несвязанных сценариях, вы бы тоже смогли воспроизвести эту машину на своей локальной базе кода ...:)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top