Отладка тайм-аута классического сценария ASP на IIS6? - PullRequest
0 голосов
/ 09 марта 2011

У меня есть приложение ASP Classic, которое по разным причинам было перенесено с сервера Windows 2000 на сервер Windows 2003 R2. Большая часть классического ASP работает отлично. Проблема в том, что одна страница всегда возвращает «Тайм-аут сценария» в журнал и ошибку 500 для пользователя. Я пытался отключить CustomErrors, но все еще не знаю, какая строка кода вызывает ошибку. Кто-нибудь может дать некоторое представление о том, как найти линию, которая истекает?

Ответы [ 6 ]

0 голосов
/ 27 марта 2014

Я использую следующий код для поиска ошибки на странице ASP .

<%
dim objASPError
'Grab the error stuff and quickly release
 Set objASPError = Server.GetLastError
on error resume next
strForm     = Request.Form
strQuery    = Request.QueryString
TheMessage= "<table border=0 width=90% cellpadding=1 cellspacing=0>"_
& "<tr><td>"_
& "<table width=100% cellpadding=5 cellspacing=0 border=0>"_
& "<tr><td colspan=2>Hi: Admin. Fatal Error occured as follows<br></td></tr>"_
& "<tr><td>"_
& "<li><b>Error occured at: " & Now() & " </b></ul>"_
& "<li><b>Referred from:"&request.ServerVariables("HTTP_REFERER")&" </b></ul>"_
& "<li><font color=#000000 face=verdana,arial,helvetica size=1><b>Url: " & request.ServerVariables("URL") & " </b></ul>"_
& "<li><b>Category: " & objASPError.Category & " </b></ul>"_
& "<li><b>Filename: " & objASPError.File & " </b></ul>"_
& "<li><b>ASP Code: " & objASPError.ASPCode & " </b></ul>"_
& "<li><b>Number: " & objASPError.Number & " </b></ul>"_
& "<li><b>Source: " &objASPError.Source & " </b></ul>"_
& "<li><b>LineNumber: " &objASPError.Line & " </b></ul>"_
& "<li><b>Column: " &objASPError.Column & " </b></ul>"_
& "<li><b>Description: " & objASPError.Description & " </b></ul>"_
& "<li><b>ASP Description: " & objASPError.ASPDescription & " </b></ul>"_
& "<li><b>All HTTP: " & Request.ServerVariables("ALL_HTTP")&" </b></ul>"_
& "<li><b>POST Fields: " & strForm &" </b></ul>"_
& "<li><b>GET Fields: " & strQuery &" </b></ul>"_
& "</td></tr></table>"
Set objASPError = Nothing
Response.Write TheMessage
%>

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

Или вы можете использовать эту конфигурацию в файле web.config , если вы используете IIS 7 +

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom">
                <error statusCode="500" subStatusCode="100" path="/500-100.asp" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

Последующие шаги:

  1. Создание настраиваемого ASP-файла ошибки. Назовите это 500-100.asp

  2. Настройте пользовательские страницы ошибок IIS для вызова этой страницы. Вы должны установить его на 500.100 errors.

Проверьте эту ссылку , чтобы узнать, как установить страницу пользовательских ошибок в IIS 7 +

Проверьте эту ссылку , чтобы узнать, как установить страницу пользовательских ошибок в IIS 6

0 голосов
/ 11 марта 2011

Попробуйте использовать Option Explicit , чтобы получить более четкую ошибку - это может первоначально вызвать больше ошибок, так как вам нужно правильно объявить каждую переменную, но это дает больше подробных сообщений об ошибках.

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

0 голосов
/ 11 марта 2011

в iis установить значение «отправить ошибки в браузер» в true. затем полное сообщение об ошибке вкл. Номера строк отправляются клиенту. (в IE вы должны установить «показывать короткие ошибки http в false»)

alternativley, установите в iis значение «серверная отладка» в true, и в вашем скрипте (при условии, что вы используете vbscirpt) вы можете использовать ключевое слово «stop» в vbscript.

тогда появится сообщение об отладке

0 голосов
/ 10 марта 2011

Похоже, вы в фазе отладки.

На странице обидчика начинайте удалять код, пока не получите что-то для работы. Последнее, что удалено, вероятно, является проблемой.

0 голосов
/ 10 марта 2011

Если журналы ничего не сообщают, то вам нужно убедиться, что IIS обращается к странице, я бы добавил

Response.Write ("something")
Response.End

в самом верху страницы, если он печатает что-то, то выЗнайте, что проблема находится на странице, и вам нужно проанализировать на ней vb-скрипт, чтобы найти код, который останавливает.Response.End весьма полезен для этой цели.

0 голосов
/ 09 марта 2011

Проверяли ли журналы IIS и проверяли ли они как можно больше? По умолчанию они находятся в Windows или WinNT \ system32 \ logs .... Диспетчер IIS скажет вам точно.

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

...