Трассировка на уровне страниц Asp.Net, отладка, обработка ошибок [Пример]
В любом приложении в процессе разработки обязательно возникают ошибки. Важно уметь обнаруживать ошибки на ранней стадии.
В Visual Studio это можно сделать для приложений ASP.Net. Visual Studio используется для отладки и имеет методы обработки ошибок для ASP.Net.
Что такое отладка в ASP.NET?
Отладка — это процесс добавления точек останова в приложение. Эти точки останова используются для приостановки выполнения работающей программы. Это позволяет разработчику понять, что происходит в программе в конкретный момент времени.
Возьмем пример программы. Программа отображает пользователю строку «Идет отладка». Предположим, когда мы запускаем приложение, по какой-то причине строка не отображается. Чтобы выявить проблему, нам нужно добавить точку останова. Мы можем добавить точку останова в строку кода, которая отображает строку. Эта точка останова приостановит выполнение программы. На этом этапе программист может увидеть, что, возможно, идет не так. Программист соответствующим образом исправляет программу.
Здесь, в примере, мы будем использовать наше «DemoApplication», созданное в предыдущих главах. В следующем примере мы увидим
- Как заставить демонстрационное приложение отображать строку.
- Как добавить точки останова в приложение.
- Как отлаживать приложение с помощью этой точки останова.
Как отладить приложение в ASP.NET
Ниже приведены шаги по созданию демонстрационного приложения, добавлению точек останова и отладке в ASP.Net:
Шаг 1) Откройте приложение в Visual Studio.
Давайте сначала убедимся, что наше веб-приложение открыто в 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, где вы хотите остановить выполнение программы.
- Чтобы добавить точку останова, вам нужно щелкнуть столбец, в который вы хотите вставить точку останова. Итак, в нашем случае мы хотим, чтобы наша программа остановилась на строке кода «Response.Write». Вам не нужно добавлять какую-либо команду для добавления точки останова. Вам просто нужно нажать на строку, на которой вы хотите добавить точку останова.
- Как только это будет сделано, вы заметите, что код отмечен красным. Кроме того, в столбце рядом со строкой кода появляется красный пузырь.
Заметка: - Вы можете добавить несколько точек останова в приложении.
Шаг 4) Запустите приложение в режиме отладки.
Теперь вам нужно запустить приложение в режиме отладки. В Visual Studio выберите пункт меню «Отладка» -> «Начать отладку».
Выход:-
При правильном выполнении всех шагов выполнение программы прервется. Visual Studio перейдет к точке останова и отметит строку кода желтым цветом.
Теперь, если программист почувствует, что код некорректен, выполнение можно остановить. Затем код можно изменить соответствующим образом. Для продолжения работы программы программисту необходимо нажать кнопку F5 на клавиатуре.
Что такое трассировка в ASP.NET?
Трассировка приложений позволяет увидеть, приводят ли какие-либо запрошенные страницы к ошибке. Если трассировка включена, в приложение добавляется дополнительная страница под названием «trace.axd». (См. изображение ниже). Эта страница прикреплена к заявке. На этой странице будут показаны все запросы и их статус.
Как включить трассировку для приложения в ASP.NET
Давайте посмотрим, как включить трассировку для Приложение ASP.Net:
Шаг 1) Давайте поработаем над нашим «Демоприложением». Откройте файл web.config из обозревателя решений.
Шаг 2) Добавьте приведенную ниже строку кода в файл Web.config.
Оператор трассировки используется для включения трассировки приложения.
- В операторе трассировки используется 'requestLimit'. Он определяет количество запросов страниц, которые необходимо отслеживать.
- В нашем примере мы задаем ограничение 40. Мы задаем ограничение, потому что более высокое значение приведет к снижению производительности приложения.
<?xml version="1.0" encoding="utf-8"?> <! -- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <trace enable="true" pageOutput="false" requestLimit="40" localOnly="false"/> </system.web> </configuration>
Запустите «демоприложение» в Visual Studio.
Выход:-
Если вы сейчас перейдете по URL-адресу – http://localhost:53003/trace.axd , вы увидите информацию по каждому запросу. Здесь вы можете увидеть, возникают ли какие-либо ошибки в приложении. На странице выше показаны следующие типы информации.
- Время запроса веб-страницы.
- Имя запрашиваемой веб-страницы.
- Код состояния веб-запроса. (код состояния 200 означает, что запрос успешен).
- Просмотр сведений, который позволяет просмотреть более подробную информацию о веб-запросе. Пример этого показан ниже. Одной из важных детальных сведений является информация заголовка. Эта информация показывает, какая информация отправляется в заголовке каждого веб-запроса.
Трассировка уровня страницы в ASP.NET
Трассировка на уровне страницы в ASP.Net показывает всю общую информацию о веб-странице во время ее обработки. Это полезно при отладке, если страница по какой-либо причине не работает. Visual Studio предоставляет подробную информацию о различных аспектах страницы, а также такую информацию, как время каждого метода, вызываемого в веб-запросе.
Например, если у вашего веб-приложения возникают проблемы с производительностью, эта информация может помочь в устранении проблемы. Эта информация отображается при запуске приложения в Visual Studio.
Как включить трассировку на уровне страницы в ASP.NET
Давайте посмотрим, как включить трассировку на уровне страницы для приложения ASP.Net:
Шаг 1) Давайте поработаем над нашим демонстрационным приложением. Откройте файл demo.aspx из обозревателя решений.
Шаг 2) Добавьте приведенную ниже строку кода, чтобы включить трассировку страниц. В объявлении страницы просто добавьте строку Trace="true". Эта строка кода позволит отслеживать уровень страницы.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %> <!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server”> </form> </body> </html>
Запустите приложение в Visual Studio.
Выход:-
Теперь, когда отображается веб-страница Demo.aspx, вы получите массу информации о ней. На этой странице отображается такая информация, как время каждого аспекта жизненного цикла страницы.
Обработка ошибок: отображение пользовательской страницы ошибок
In ASP.Net, вы можете отображать пользователям собственные страницы ошибок. Если приложение содержит какую-либо ошибку, пользовательская страница отобразит эту ошибку пользователю.
В нашем примере мы сначала добавим HTML-страницу. На этой странице пользователю будет отображена строка «Мы изучаем проблему». Затем мы добавим код ошибки на нашу страницу demo.aspx, чтобы страница ошибки отображалась.
Давайте выполним следующие шаги.
Шаг 1) Давайте поработаем над нашим демонстрационным приложением. Добавим HTML-страницу в приложение
- Щелкните правой кнопкой мыши демонстрационное приложение в обозревателе решений.
- Выберите пункт меню «Добавить» -> HTML-страница.
Шаг 2) На следующем шаге нам нужно указать имя новой HTML-страницы.
- Укажите имя «ErrorPage».
- Нажмите кнопку «ОК», чтобы продолжить.
Шаг 3) Страница ошибки автоматически откроется в Visual Studio. Если вы перейдете в обозреватель решений, вы увидите добавленный файл.
Добавьте на HTML-страницу строку кода «Мы изучаем проблему». Вам не нужно закрывать файл HTML перед внесением изменений в файл web.config.
<!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> We are looking into the problem </body> </html>
Шаг 4) Теперь вам нужно внести изменения в файл web.config. Это изменение будет уведомлять о том, что при возникновении ошибки в приложении необходимо отображать специальную страницу ошибок.
Тег customErrors позволяет определить собственную страницу ошибок. Свойству defaultRedirect присвоено имя нашей пользовательской страницы ошибок, созданной на предыдущем шаге.
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <customErrors mode="On" defaultRedirect="ErrorPage.html"> </customErrors> </system.web> </configuration>
Шаг 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) Давайте поработаем над нашим демонстрационным приложением. Откройте файл 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"); } } }
Объяснение кода: -
- Первая строка — это обработчик события Application_Error. Это событие вызывается всякий раз, когда в приложении возникает ошибка. Обратите внимание, что имя события должно быть «Application_Error». И параметры должны быть такими, как показано выше.
- Далее мы определяем объект типа класса HttpException. Это стандартный объект, который будет содержать все подробности ошибки. Затем мы используем метод Server.GetLastError, чтобы получить все подробности последней ошибки, произошедшей в приложении.
- Затем мы проверяем, равен ли код последней ошибки 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) Давайте поработаем над нашим демонстрационным приложением. Откройте файл 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"); } } }
Объяснение кода: -
- Первая строка — получить саму ошибку с помощью метода Server.GetLastError. Затем это значение присваивается переменной exc.
- Затем мы создаем пустую строковую переменную с именем «str». Мы получаем фактическое сообщение об ошибке, используя свойство exc.Message. Свойство exc.Message будет содержать точное сообщение о любой ошибке, возникающей при запуске приложения. Затем это значение присваивается строковой переменной.
- Далее мы определяем файл с именем AllErrors.txt. Сюда будут отправляться все сообщения об ошибках. Мы записываем в этот файл строку «str», содержащую все сообщения об ошибках.
- Наконец, переносим пользователя в файл ErrorPage.html.
Выход:-
Просмотрите страницу http://localhost:53003/Demo1.aspx . Помните, что Demo1.aspx не существует в нашем приложении. Затем вы получите результат ниже.
В то же время, если вы откроете файл AllErrors.txt, вы увидите следующую информацию.
Сообщение об ошибке может быть позже передано разработчику для целей отладки.
Резюме
- ASP.Net имеет возможность выполнять отладку и обработку ошибок.
- Отладку можно осуществить, добавив в код точки останова. Затем можно запустить параметр «Начать с отладки» в Visual Studio для отладки кода.
- Трассировка — это возможность предоставить дополнительную информацию во время работы приложения. Это можно сделать на уровне приложения или страницы.
- На уровне страницы в директиву страницы необходимо добавить код Trace=true.
- На уровне приложения для приложения создается дополнительная страница под названием Trace.axd. Это предоставляет всю необходимую информацию для отслеживания.