Отладка с помощью Response.Write в классическом ASP - PullRequest
11 голосов
/ 14 января 2010

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

Как мне сделать так, чтобы мои Response.Write операторы отображались без появления других ошибок?

Ответы [ 7 ]

11 голосов
/ 16 января 2010

Мы используем Visual Studio 2008 для отладки классических ASP-страниц. Вы можете присоединиться к процессу IIS и «пройтись» по странице. Это очень мило. Вот шаги:

  1. Получите последнюю версию классического ASP из системы управления версиями.

  2. Установите IIS (если еще нет). К вашему сведению ... Я использую IIS 5.1.

  3. Создайте виртуальный каталог с именем "classicDebug", указывающий на локальный каталог (C: \ Websites \ ClassicWebSite).

  4. Просмотр свойств виртуального каталога, вкладка Virtual Directory.

  5. Включить флажок «Доступ к источнику скрипта».

  6. Кнопка конфигурации, вкладка «Параметры» - проверить все.

  7. Вкладка «Отладка» - проверьте все.

    7а. На вкладке ASP.NET выберите 2.x

  8. Загрузите (не запускайте, не отлаживайте или F5) веб-сайт в VS.NET 2008.

  9. Отредактируйте ваш global.asa соответственно (источники данных и пути).

  10. Найдите страницу .asp, которую вы хотите «пройти», и установите точку останова вверху (или где-нибудь).

  11. Откройте IE и перейдите на свою страницу.

  12. Вернитесь в VS.NET и выберите Отладка -> Присоединить к процессу

  13. Установите флажок «Показывать процессы от всех пользователей» и выберите процесс. Для меня (IIS 5.1) имя процесса - dllhost.exe, запущенный с учетной записью IWAM_COMPUTERNAME с типом «Script, T-SQL, Managed, x86».

  14. Посетите вашу страницу, используя IE ... VS.NET должен сломаться.

11 голосов
/ 16 января 2010

Я довольно часто использую Response.End, когда мне нужно увидеть статус в определенном месте на странице.

4 голосов
/ 14 января 2010

Закомментируйте строку, которая выдает ошибку, и посмотрите, что показывает respnse.write, - единственное разумное.

Не используйте on error resume next во время разработки своих страниц. Вы должны убедиться, что вы создаете свои страницы правильно и что вы производите правильный код. Вы не увидите никаких ошибок, если используете on error resume next.

on error resume next должен использоваться, на мой взгляд, только в действиях с базой данных и в поставляемом (не развивающемся) коде. В этом случае вы должны использовать

if Err.Number <> 0 then 

конструкция для проверки любых ошибок. Вы просто не сможете сделать это после каждой строки в asp, если поместите оператор on error resume next в начало своего кода, но это определенно имеет смысл в коде обработки базы данных.

3 голосов
/ 14 января 2010

Вы должны будете использовать оператор «при возобновлении ошибки далее» в верхней части страницы ASP. Это решит вашу проблему, когда возникнет ошибка, она переместится на следующую строку, а не выдаст ошибку.

Вы можете проверить эту ссылку http://www.powerasp.com/content/new/on-error-resume-next.asp для справки.

Счастливое кодирование

2 голосов
/ 14 января 2010

Попробуйте Response.Flush после ваших отладочных отчетов или установите Response.Buffer в false.

1 голос
/ 11 сентября 2015

Говоря об альтернативных опциях, из сообщения Дэвида Мигора вы также можете записать следы в файл. Вот пример того, как записать в файлы: http://www.4guysfromrolla.com/webtech/040699-1.shtml

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

Другое решение, которое мы используем, - это поместить методы трассировки в сборку .Net, зарегистрировать его как COM, а затем вызвать его с помощью CreateObject.

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

Я лично использую сочетание этих подходов: я просматриваю файлы журнала, использую точки останова и даже время от времени размещаю Response.Write.

Еще одна вещь: активируйте и просмотрите журналы IIS: они часто сообщают вам, на какой строке прервалась ваша страница. Вы можете прочитать здесь, как включить или отключить журналы для классического ASP: https://technet.microsoft.com/en-us/library/hh831387.aspx.

1 голос
/ 20 декабря 2011

Это может помочь в качестве альтернативы response.write.

Я собрал этот класс ASP, который работает с Firebug + FirePHP.Это позволяет вам записывать значения (включая строки, многомерные массивы и даже объекты, созданные с помощью json.asp) в консоль Firebug и просматривать встроенные объекты коллекции ASP, которые могут помочь (особенно в Ajax, где вы не можете выводить данные отладки безпрерывание ответа json.) Время загрузки и ошибки Ajax-скрипта автоматически регистрируются для быстрого просмотра.

https://github.com/dmeagor/ClassicASP-FirePHP

Просто включите файл и используйте log (somevalue) для отправки отформатированных переменных вконсоль firebug.

Выпущено по лицензии MIT с открытым исходным кодом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...