Я пытаюсь отлаживать некоторый код с помощью Response.Write
, но когда я запускаю код, он пропускает этот оператор и ошибки в какой-то момент далее в коде.
Как я могу заставить свои операторы Response.Write
показывать без появления других ошибок?
Я пытаюсь отлаживать некоторый код с помощью Response.Write
, но когда я запускаю код, он пропускает этот оператор и ошибки в какой-то момент далее в коде.
Как я могу заставить свои операторы Response.Write
показывать без появления других ошибок?
Я довольно часто использую Response.End
, когда мне нужно увидеть статус в определенном месте на странице.
Мы используем Visual Studio 2008 для отладки классических страниц asp. Вы можете подключиться к процессу IIS и "перейти" на страницу. Это очень мило. Вот шаги:
Получить последний из классического ASP из исходного управления.
Установите IIS (если он еще не установлен). FYI... Я использую IIS 5.1.
Создайте виртуальный каталог с именем "classicDebug", указывающий на ваш локальный каталог (C:\Websites\ClassicWebSite).
Просмотрите свойства виртуального каталога, вкладку "Виртуальный каталог".
Установите флажок "Доступ к источнику" Script.
Кнопка конфигурации, вкладка "Параметры" - проверьте все.
Вкладка "Отладка" - проверьте все.
7а. На вкладке ASP.NET выберите 2.x
Загрузите (не запускайте или отлаживайте или F5) веб-сайт в VS.NET 2008.
Отредактируйте свой global.asa соответственно (источники данных и пути).
Найдите страницу .asp, которую вы хотите "пройти", и установите точку перерыва в верхней части (или где-нибудь).
Откройте IE и перейдите на страницу.
Вернитесь к VS.NET и выберите Debug → Attach to Process
Проверьте "показать процессы от всех пользователей" и выберите процесс. Для меня (IIS 5.1) имя процесса - dllhost.exe, запущенное с учетной записью IWAM_COMPUTERNAME w/type "Script, T-SQL, Managed, x86".
Посетите свою страницу с помощью IE... VS.NET должен сломаться.
Прокомментируйте строку, которая дает ошибку, и посмотрите, что отображает respnse.write - единственное, что разумно.
Не используйте on error resume next
, пока вы разрабатываете свои страницы. Вы должны убедиться, что правильно строите свои страницы и что вы производите правильный код. Вы не увидите никаких ошибок, если используете on error resume next
.
on error resume next
следует использовать, на мой взгляд, только в действиях базы данных и в доставленном (нерасширяющемся) коде. В этом случае вы должны использовать
if Err.Number <> 0 then
для проверки любых ошибок. Вы просто не можете сделать это после каждой строки в asp, если вы положили оператор on error resume next
в начало вашего кода, но это, безусловно, влияет на код обработки базы данных.
Вам нужно будет использовать инструкцию "on error resume next" поверх страницы ASP. Это решит вашу проблему при возникновении ошибки, она переместится на следующую строку, а не на ошибку.
Вы можете проверить эту ссылку http://www.powerasp.com/content/new/on-error-resume-next.asp для справки.
Счастливое кодирование
Попробуйте Response.Flush после ваших отладочных записей или установите Response.Buffer - false.
Это может помочь в качестве альтернативы response.write.
Я собрал этот класс ASP include, который работает с Firebug + FirePHP. Он позволяет регистрировать значения (включая строки, многомерные массивы и даже объекты, созданные с помощью json.asp), в консоль firebug и просматривать ASP, созданные в объектах коллекции, которые могут помочь (особенно с Ajax, где вы не можете выводить данные отладки без отключение ответа json.) Ajax script Время загрузки и ошибки автоматически регистрируются для быстрого просмотра.
https://github.com/dmeagor/ClassicASP-FirePHP
Просто включите файл и используйте журнал (somevalue) для отправки форматированных переменных в консоль firebug.
Выпущено по лицензии MIT с открытым исходным кодом
Говоря об альтернативных вариантах, из сообщения Дэвида Мегора, вы также можете записывать трассировки в файл. Вот пример того, как писать в файлы: http://www.4guysfromrolla.com/webtech/040699-1.shtml
Если вы хотите, вы можете даже поместить подпрограммы trace в файл include и использовать его на всех ваших страницах, когда вам это нужно.
Другое решение, которое мы используем, заключается в том, чтобы поместить методы трассировки в сборку .Net, зарегистрировать его как COM, а затем вызвать его с помощью CreateObject.
Эти параметры позволят вам сохранить ваши трассы в файле, который вы можете просмотреть позже, и поделиться с другими разработчиками.
Я лично использую сочетание этих подходов: просматриваю файлы журналов, использую точки останова и даже время от времени помещаю Response.Write.
Еще одна вещь: активировать и просматривать журналы IIS: они часто расскажут вам, в какой строке разбилась ваша страница. Вы можете прочитать здесь, как включить или отключить журналы для классического ASP: https://technet.microsoft.com/en-us/library/hh831387.aspx.