Как отладить внутреннюю ошибку сервера 500 на IIS 6.0 под управлением Plesk (работает ASP classic)? - PullRequest
1 голос
/ 04 декабря 2009

Я прочитал почти КАЖДЫЙ пост в блоге, статью и справочный документ, опубликованные по этой проблеме, но они не помогли. Наиболее распространенные предложения:

  1. Internet Explorer -> Меню инструментов -> Свойства обозревателя -> Дополнительно -> Показать дружественные сообщения об ошибках (убедитесь, что галочка НЕ ​​отмечена)

  2. IIS -> вкладка «Домашний каталог» -> «Конфигурация» -> вкладка «Отладка» -> Отправить подробное сообщение об ошибке ASP клиенту (убедитесь, что он выбран)

Ни одна из этих работ, и у меня есть ощущение, что это связано с управлением IIS в Plesks. Есть ли ЛЮБОЙ способ узнать, что это за внутренние ошибки сервера? Даже если это означает просмотр файлов журнала на сервере?

Ответы [ 5 ]

3 голосов
/ 04 декабря 2009

Событие class_terminate может использоваться для создания глобального обработчика ошибок, не затрагивая конфигурацию iis. Когда ASP сталкивается с ошибкой, это server.execute настроенный обработчик 500, а затем вернуться к первоначальному сценарию для очистки всех оставшихся объектов.

Это дает вам возможность создать глобальный объект отладчика и использовать событие class_terminate для обработки ошибок (например, распечатать отладочную информацию).

Например:

class cDebugger
    private sub class_terminate
        if err then
            response.clear
            dim asp_error
            set asp_error = server.getLastError()
            response.write asp_error.description
            ...
            ...
        end if
    end sub
end class
set [_debugger] = new cDebugger
2 голосов
/ 14 декабря 2009

Это относится только к Plesk.

Перейдите в свой домен в панели управления Plesk и отключите «Пользовательские документы об ошибках» в разделе «Настройка физического хостинга». Это отправит сообщение об ошибке прямо в браузер.

Вы также можете найти сообщения об ошибках в каталоге файлов журнала yourdomain.com\statistics\logs\W3SVCXXXX

1 голос
/ 04 декабря 2009

Agent_9191 выдвинул идею:

Вверху страницы поставить:

On Error Resume Next

А внизу страницы поставьте:

If Err.Number <> 0 Then Response.Write(Err.Description)

Есть ли другие идеи по отладке напрямую из IIS без изменения кода страницы?

0 голосов
/ 04 декабря 2009

«Если» у вас есть возможность отсканировать свою пользовательскую страницу с ошибкой 500, то вы можете уловить ошибку, используя вызов Server.GetLastError, который предоставит вам все подробности (а большинство из них), которые должны позволить вам начать отладку это в прямом эфире.

http://www.w3schools.com/ASP/asp_ref_error.asp

Не можете ли вы воссоздать проблему локально?

0 голосов
/ 04 декабря 2009

Другая легенда для разработчиков ASP Classic (хотя и с использованием IIS 7.0) находится здесь:

http://blogs.iis.net/bills/archive/2007/05/21/tips-for-classic-asp-developers-on-iis7.aspx

...