Внутренний Server 500 ошибка классического ASP на IIS 7.5 - PullRequest
0 голосов
/ 09 ноября 2011

Недавно я переместил классический asp-сайт на сервер Windows 2008 с IIS 7.5.

Домашняя страница - это страница с двумя фреймами, в нижней части которой находятся два фрейма.Таймер JavaScript запускается во фрейме заголовка и заставляет страницы в двух фреймах перезагружаться каждые 10 минут.При прочих равных условиях это прекрасно работает - и сессии никогда не прекращаются.На экране я отображаю «последнее обновление в 10.35» - чтобы пользователи могли видеть, когда было последнее обновление.Каждая страница на главной странице фреймов - и фреймы - имеют вверху ..

IF IsEmpty(Session("CoID")) THEN
Response.Write ... some javascript to replace the main page with the log in page
END IF

Как я уже сказал - это прекрасно работает большую часть времени.

Использование сайта в качествепользователь - если мой ящик переходит в спящий режим и обновления не работают из-за недоступности подключения к Интернету - когда я просыпаю ящик, страница может сидеть там с последним обновлением в 10.50 (например, это может быть два часатому назад).Машина сразу же просыпается, и происходит попытка обновления - теперь можно подумать, что сеанс будет потерян, а код, который обнаружит пустую сессию, включится и заменит страницу на страницу входа.Но этого не происходит.Вместо этого я получаю два 500 внутренних сообщения об ошибках сервера, где две страницы в iframes должны быть.

Чего я не понимаю, так это - если я щелкаю правой кнопкой мыши заголовок и выбираю «Обновить» - он делает то, что должен- обнаруживает, что сессия пуста и заменяет главную страницу страницей входа.Почему две страницы в фреймах не делают одно и то же?Обнаруженный пустой код сеанса идентичен на всех страницах, но по какой-то причине, когда обновление пытается перезагрузить страницы в двух фреймах - генерируется внутренняя ошибка сервера 500.

1 Ответ

0 голосов
/ 09 ноября 2011

Я бы предложил присвоить Session("CoID") переменной и затем протестировать ее, т.е.

Dim sess
sess = Session("CoID")

If sess = "" Then 
    ' code you want to execute '
End If

Поскольку IsEmpty иногда неожиданно проверяется как true для строк, которым назначена пустая строка, я думаю, что проверка, равна ли переменная "", безопаснее.

...