Отслеживание, отладка, обработка ошибок на уровне страницы Asp.Net (пример)

Содержание:

Anonim

В любом приложении ошибки неизбежно возникают в процессе разработки. Важно уметь обнаруживать ошибки на ранней стадии.

В Visual Studio это можно сделать для приложений ASP.Net. Visual Studio используется для отладки и имеет методы обработки ошибок для ASP.Net.

В этом руководстве вы узнаете:

  • Что такое отладка в ASP.NET?
  • Что такое трассировка в ASP.NET?
  • Трассировка на уровне страницы
  • Обработка ошибок: отображение настраиваемой страницы ошибки
  • Необработанное исключение ASP.NET
  • Ведение журнала ошибок ASP.NET

Что такое отладка в ASP.NET?

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

Возьмем пример программы. Программа отображает пользователю строку «Мы отлаживаем». Предположим, когда мы запускаем приложение, по какой-то причине строка не отображается. Чтобы определить проблему, нам нужно добавить точку останова. Мы можем добавить точку останова в строку кода, которая отображает строку. Эта точка останова приостановит выполнение программы. На этом этапе программист может увидеть, что, возможно, идет не так. Программист соответствующим образом исправляет программу.

В этом примере мы будем использовать наше «DemoApplication», которое было создано в предыдущих главах. В следующем примере мы увидим

  • Как заставить демонстрационное приложение отображать строку.
  • Как добавить точки останова в приложение.
  • Как отлаживать приложение, используя эту точку останова.

Шаг 1. Давайте сначала убедимся, что наше веб-приложение открыто в Visual Studio. Убедитесь, что DemoApplication открыто в Visual Studio.

Шаг 2) Теперь откройте файл Demo.aspx.cs и добавьте следующую строку кода.

  • Мы просто добавляем строку кода Response.Write для отображения строки.
  • Поэтому, когда приложение выполняется, оно должно отображать строку «Мы отлаживаем» в веб-браузере.

namespace DemoApplication{public partial class Demo : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Response.Write("We are debugging");}}}

Шаг 3) Теперь давайте добавим точку останова. Точка останова - это точка в Visual Studio, в которой вы хотите остановить выполнение программы.

  1. Чтобы добавить точку останова, вам нужно щелкнуть столбец, в который вы хотите вставить точку останова. В нашем случае мы хотим, чтобы наша программа остановилась на строке кода Response.Write. Вам не нужно добавлять какую-либо команду, чтобы добавить точку останова. Вам просто нужно щелкнуть по строке, на которой вы хотите добавить точку останова.
  2. Как только это будет сделано, вы заметите, что код помечается красным. Кроме того, в столбце рядом со строкой кода появляется красный пузырь.

Примечание: - Вы можете добавить несколько точек останова в приложение.

Шаг 4) Теперь вам нужно запустить приложение в режиме отладки. В Visual Studio выберите пункт меню «Отладка» -> «Начать отладку».

Выход:-

При правильном выполнении всех шагов выполнение программы прервется. Visual Studio перейдет к точке останова и пометит строку кода желтым цветом.

Теперь, если программист считает, что код неверен, выполнение можно остановить. Затем код можно соответствующим образом изменить. Чтобы продолжить работу с программой, программисту необходимо нажать кнопку F5 на клавиатуре.

Что такое трассировка в ASP.NET?

Трассировка приложений позволяет увидеть, приводит ли запрашиваемая страница к ошибке. Когда трассировка включена, в приложение добавляется дополнительная страница с именем trace.axd. (См. Изображение ниже). Эта страница прикреплена к заявке. На этой странице будут показаны все запросы и их статус.

Давайте посмотрим, как включить трассировку для приложения.

Шаг 1) Давайте поработаем над нашим «демонстрационным приложением». Откройте файл web.config в обозревателе решений.

Шаг 2) Добавьте приведенную ниже строку кода в файл Web.config.

Оператор трассировки используется для включения трассировки для приложения.

  • В операторе трассировки используется requestLimit. Он определяет количество запросов страницы, которые необходимо отслеживать.
  • В нашем примере мы даем предел 40. Мы даем предел, потому что более высокое значение ухудшает производительность приложения.

Запустите «демонстрационное приложение» в Visual Studio.

Выход:-

Если вы теперь перейдете к URL-адресу - http: // localhost: 53003 / trace.axd , вы увидите информацию для каждого запроса. Здесь вы можете увидеть, возникают ли в приложении какие-либо ошибки. На приведенной выше странице показаны следующие типы информации.

  1. Время запроса веб-страницы.
  2. Имя запрашиваемой веб-страницы.
  3. Код состояния веб-запроса. (код состояния 200 означает, что запрос выполнен).
  4. Просмотр сведений, позволяющий просматривать дополнительные сведения о веб-запросе. Пример этого показан ниже. Одна важная подробная информация - это информация в заголовке. Эта информация показывает, какая информация отправляется в заголовке каждого веб-запроса.

Трассировка на уровне страницы

Трассировка страницы показывает всю общую информацию о веб-странице, когда она обрабатывается. Это полезно при отладке, если страница не работает по какой-либо причине.

Visual Studio предоставит подробную информацию о различных аспектах страницы. Такая информация, как время для каждого метода, вызываемого в веб-запросе. Например, если ваше веб-приложение имеет проблемы с производительностью, эта информация может помочь в устранении проблемы. Эта информация отображается при запуске приложения в Visual Studio.

Давайте посмотрим, как включить трассировку для приложения на уровне страницы.

Шаг 1) Давайте поработаем над нашим DemoApplication. Откройте файл demo.aspx из обозревателя решений.

Шаг 2) Добавьте приведенную ниже строку кода, чтобы включить трассировку страницы. В объявлении страницы просто добавьте строку Trace = "true". Эта строка кода позволит отслеживать уровень страницы.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %>

Теперь, когда отображается веб-страница Demo.aspx, вы получите много информации о странице. На этой странице отображается такая информация, как время для каждого аспекта жизненного цикла страницы.

Обработка ошибок: отображение настраиваемой страницы ошибки

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

В нашем примере мы сначала добавим HTML-страницу. На этой странице пользователю будет отображаться строка «Мы изучаем проблему». Затем мы добавим код ошибки на нашу страницу demo.aspx, чтобы отображалась страница с ошибкой.

Выполним следующие шаги

Шаг 1) Давайте поработаем над нашим DemoApplication. Добавим HTML-страницу в приложение

  1. Щелкните правой кнопкой мыши DemoApplication в обозревателе решений.
  2. Выберите пункт меню «Добавить» -> HTML-страница.

Шаг 2) На следующем шаге нам нужно дать имя новой HTML-странице.

  1. Укажите имя как «ErrorPage».
  2. Нажмите кнопку «ОК», чтобы продолжить.

Шаг 3) Страница ошибок автоматически откроется в Visual Studio. Если вы перейдете в обозреватель решений, вы увидите добавленный файл.

Добавьте строку кода «Мы изучаем проблему» на HTML-страницу. Вам не нужно закрывать HTML-файл перед внесением изменений в файл web.config.

We are looking into the problem

Шаг 4) Теперь вам нужно внести изменения в файл web.config. Это изменение будет уведомлять о том, что всякий раз, когда в приложении возникает ошибка, необходимо отображать настраиваемую страницу ошибки.

Тег customErrors позволяет определить настраиваемую страницу ошибки. Свойству defaultRedirect присвоено имя нашей настраиваемой страницы ошибки, созданной на предыдущем шаге.

Шаг 5) Теперь давайте добавим некорректный код на страницу demo.aspx.cs. Откройте эту страницу, дважды щелкнув файл в обозревателе решений.

Добавьте приведенный ниже код в файл Demo.aspx.cs.

  • Эти строки кода предназначены для чтения строк текста из файла.
  • Предполагается, что файл находится на диске D с именем «Example.txt».
  • Но в нашей ситуации этого файла на самом деле не существует. Таким образом, этот код приведет к ошибке при запуске приложения.

namespace DemoApplication{public partial class Demo : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){String path = @"D:\Example.txt";string[] lines;lines = File.ReadAllLines(path);}}}

Теперь выполните код в Visual Studio, и вы должны получить следующий результат.

Выход:-

На приведенной выше странице показано, что в приложении возникла ошибка. В результате пользователю отображается страница Error.html.

Необработанное исключение ASP.NET

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

Предположим, пользователь переходит не на ту страницу в приложении. Это то, чего нельзя предсказать. В таких случаях ASP.Net может перенаправить пользователя на errorpage.html.

Давайте посмотрим на это на примере.

  • Мы собираемся использовать то же «DemoApplication», у которого есть Errorpage.html.
  • И мы попробуем просмотреть веб-страницу, которой нет в нашем приложении.
  • В этом случае мы должны быть перенаправлены на нашу страницу ErrorPage.html. Давайте посмотрим, как этого добиться.

Шаг 1) Давайте поработаем над нашим DemoApplication. Откройте файл Global.asax.cs из обозревателя решений.

ПРИМЕЧАНИЕ . Файл global.asax.cs используется для добавления кода, который будет применяться на всех страницах приложения.

Шаг 2) Добавьте приведенную ниже строку кода в global.asax.cs. Эти строки будут использоваться для проверки ошибок и соответствующего отображения страницы ErrorPage.html.

namespace DemoApplication{public partial class Demo : System.Web.UI.Page{protected void Application_Error(object sender, EventArgs e){‬ HttpException lastErrorWrapper = Server.GetLastError() as HttpException;if(lastErrorWrapper.GetHttpCode() == 404)Server.T ransfer("~/ErrorPage.html");}}}

Пояснение к коду: -

  1. Первая строка - это обработчик события Application_Error. Это событие вызывается всякий раз, когда в приложении возникает ошибка. Обратите внимание, что имя события должно быть Application_Error. И параметры должны быть такими, как показано выше.
  2. Далее мы определяем объект типа класса HttpException. Это стандартный объект, который будет содержать все подробности ошибки. Затем мы используем метод Server.GetLastError, чтобы получить все сведения о последней ошибке, произошедшей в приложении.
  3. Затем мы проверяем, является ли код последней ошибки 404. (Код ошибки 404 - это стандартный код, возвращаемый, когда пользователь переходит на страницу, которая не найдена). Затем мы переводим пользователя на страницу ErrorPage.html, если код ошибки совпадает.

Теперь запустите код в Visual Studio, и вы должны получить следующий результат.

Выход:-

Просмотрите страницу http: // localhost: 53003 / Demo1.aspx . Помните, что Demo1.aspx не существует в нашем приложении. После этого вы получите следующий результат.

На приведенной выше странице показано, что в приложении возникла ошибка. В результате пользователю отображается страница Error.html.

Ведение журнала ошибок ASP.NET

Регистрируя ошибки приложения, он помогает разработчику отладить и устранить ошибку позже. ASP.Net имеет возможность регистрировать ошибки. Это делается в файле Global.asax.cs при обнаружении ошибки. В процессе записи сообщение об ошибке может быть записано в файл журнала.

Давайте посмотрим на это на примере.

  • Мы собираемся использовать то же DemoApplication, у которого есть Errorpage.html.
  • И мы попробуем просмотреть веб-страницу, которой нет в нашем приложении.
  • В этом случае мы должны быть перенаправлены на нашу страницу ErrorPage.html.
  • И заодно запишем сообщение об ошибке в файл журнала. Давайте посмотрим, как этого добиться.

Шаг 1) Давайте поработаем над нашим DemoApplication. Откройте файл Global.asax.cs из обозревателя решений.

Шаг 2) Добавьте приведенную ниже строку кода в global.asax.cs. Он проверит наличие ошибок и соответственно отобразит страницу ErrorPage.html. Кроме того, в то же время мы будем записывать сведения об ошибках в файл под названием «AllErrors.txt». В нашем примере мы напишем код для создания этого файла на диске D.

namespace DemoApplication{public partial class Demo : System.Web.UI.Page{protected void Application_Error(object sender, EventArgs e){Exception exc = Server.GetLastError();String str ;str = exc.Message;String path = @"D:\AllErrors.txt";File.WriteAllTest(path,str);Server.trrasfer("~/ErrorPage.html");}}}

Пояснение к коду: -

  1. Первая строка предназначена для получения самой ошибки с помощью метода Server.GetLastError. Затем он присваивается переменной exc.
  2. Затем мы создаем пустую строковую переменную с именем 'str'. Мы получаем фактическое сообщение об ошибке, используя свойство exc.Message. Свойство exc.Message будет содержать точное сообщение о любой ошибке, возникающей при запуске приложения. Затем это присваивается строковой переменной.
  3. Затем мы определяем файл с именем AllErrrors.txt. Здесь будут отправляться все сообщения об ошибках. Мы записываем в этот файл строку 'str', которая содержит все сообщения об ошибках.
  4. Наконец, мы переводим пользователя в файл ErrorPage.html.

Выход:-

Просмотрите страницу http: // localhost: 53003 / Demo1.aspx . Помните, что Demo1.aspx не существует в нашем приложении. После этого вы получите следующий результат.

И в то же время, если вы откроете файл AllErrors.txt, вы увидите следующую информацию.

Затем сообщение об ошибке может быть передано разработчику позже для целей отладки.

Резюме

  • ASP.Net имеет возможность выполнять отладку и обработку ошибок.
  • Отладка может быть достигнута путем добавления в код точек останова. Затем запускается параметр «Начать с отладкой» в Visual Studio для отладки кода.
  • Трассировка - это средство для предоставления дополнительной информации во время работы приложения. Это можно сделать на уровне приложения или страницы.
  • На уровне страницы в директиву страницы необходимо добавить код Trace = true.
  • На уровне приложения для приложения создается дополнительная страница Trace.axd. Это предоставляет всю необходимую информацию для отслеживания.