Уровень страницы Asp.Net Tracотладка, обработка ошибок

⚡ Умное резюме

Отладка ASP.NET tracОбработка ошибок и синхронизация в Visual Studio помогают разработчикам выявлять проблемы на ранних стадиях и отслеживать запросы. trace.axd, а также перенаправлять пользователей на пользовательские страницы ошибок при возникновении необработанных исключений в процессе разработки и производства.

  • 🐞 Отладка: В Visual Studio точки останова приостанавливают выполнение, позволяя построчно проверять работающую страницу ASP.NET.
  • 🔎 TracING: Включение trace в web.config добавляет trace.axd, который отображает каждый запрос, его код состояния и время выполнения.
  • 📄 Страница TracING: Добавление TracПараметр e=”true” в директиве Page отображает время жизненного цикла отдельной страницы.
  • 🚧 Пользовательские ошибки: Тег customErrors перенаправляет пользователей на удобную страницу с сообщением об ошибке, когда приложение не срабатывает.
  • 🧭 Необработанные исключения: Функция Application_Error в файле Global.asax перехватывает непредвиденные ошибки и перенаправляет на безопасную страницу.
  • 🇧🇷 Регистрация ошибок: Запись подробной информации о Server.GetLastError в файл позволяет зафиксировать проблемы для последующей отладки.

Уровень страницы ASP.NET Tracотладка и обработка ошибок

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

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

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

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

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

В этом примере мы будем использовать наше демонстрационное приложение (DemoApplication), созданное в предыдущих главах. В следующем примере мы увидим:

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

Как отлаживать приложение в ASP.NET

Ниже описаны шаги по созданию демонстрационного приложения, добавлению точек останова и отладке в ASP.NET:

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

Отладка приложения в ASP.NET

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

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

Отладка приложения в ASP.NET

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, где вы хотите остановить выполнение программы.

Отладка приложения в ASP.NET

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

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

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

Отладка приложения в ASP.NET

Выход:-

Отладка приложения в ASP.NET

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

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

Что такое TracВнедрение ASP.NET?

Области применения tracИНГ Это позволяет увидеть, если при запросе какой-либо страницы возникает ошибка. tracвключена дополнительная страница под названием tracФайл e.axd добавлен в приложение (см. изображение ниже). Эта страница прикреплена к приложению и будет отображать все запросы и их статус.

Tracвнедрение в ASP.NET

Как включить Tracразработка приложения на ASP.NET

Давайте посмотрим, как это включить. tracдля Приложение ASP.NET:

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

Включите tracразработка приложения на ASP.NET

Шаг 2) Добавьте следующую строку кода в файл web.config. tracОператор e используется для включения tracподача заявки.

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

Включите tracразработка приложения на ASP.NET

<?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 enabled="true" pageOutput="false" requestLimit="40" localOnly="false" />

    </system.web>
</configuration>

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

Выход:-

Включите tracразработка приложения на ASP.NET

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

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

Включите tracразработка приложения на ASP.NET

Уровень страницы Tracвнедрение в ASP.NET

Уровень страницы TracИНГ В ASP.NET отображается вся общая информация о веб-странице во время её обработки. Это полезно при отладке, если страница по какой-либо причине не работает. Visual Studio предоставляет подробную информацию о различных аспектах страницы, таких как время выполнения каждого метода, вызываемого в веб-запросе.

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

Как включить Tracвнедрение на уровне страницы в ASP.NET

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

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

Уровень страницы Tracвнедрение в ASP.NET

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

Уровень страницы Tracвнедрение в ASP.NET

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

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

Запустите приложение в Visual Studio.

Выход:-

Уровень страницы Tracвнедрение в ASP.NET

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

Обработка ошибок: отображение пользовательской страницы ошибок

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

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

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

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

Обработка ошибок в ASP.NET

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

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

Обработка ошибок в ASP.NET

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

Обработка ошибок в ASP.NET

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

Обработка ошибок в ASP.NET

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    We are looking into the problem
</body>
</html>

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

Обработка ошибок в ASP.NET

<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. Откройте эту страницу, дважды щелкнув файл в обозревателе решений.

Обработка ошибок в ASP.NET

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

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

Обработка ошибок в ASP.NET

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 и вы должны получить результат ниже.

Выход:-

Обработка ошибок в ASP.NET

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

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

Даже в самых благоприятных сценариях могут возникать непредвиденные ошибки. Предположим, пользователь переходит на неправильную страницу в приложении. Этого невозможно предсказать. В таких случаях ASP.NET может перенаправить пользователя на страницу ErrorPage.html.

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

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

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

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

Примечание: Файл Global.asax.cs используется для добавления кода, который будет применяться на всех страницах приложения.

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

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

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

            if (lastErrorWrapper.GetHttpCode() == 404)
                Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code Объяснение:-

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

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

Выход:-

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

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

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

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

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

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

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

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

Журналирование ошибок ASP.NET

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

Журналирование ошибок ASP.NET

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exc = Server.GetLastError();
            String str = "";
            str = exc.Message;

            String path = @"D:\AllErrors.txt";
            File.WriteAllText(path, str);
            Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code Объяснение:-

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

Выход:-

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

Журналирование ошибок ASP.NET

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

Журналирование ошибок ASP.NET

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

Часто задаваемые вопросы (FAQ)

Да. Инструменты искусственного интеллекта, такие как GitHub Copilot, могут предлагать точки останова, объяснять исключения и предлагать исправления для кода ASP.NET. RevПросмотрите каждое предложение и воспроизведите ошибку самостоятельно, поскольку ИИ может неправильно считывать состояние, специфичное для конкретного приложения.

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

Нет. Отключение режима customErrors приводит к раскрытию стека ошибок. tracЭто приводит к тому, что конфиденциальные данные становятся доступны каждому посетителю, что представляет собой угрозу безопасности. В рабочей среде используйте режим RemoteOnly или On, чтобы полные сведения об ошибке видели только локальные разработчики.

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

Установите параметр debug=”false” в элементе compilation файла web.config. Режим отладки отключает оптимизации, увеличивает время ожидания и расширяет использование памяти, поэтому на рабочих сайтах его всегда следует отключать. Visual Studio.

Нет. Открытый trace.axd может раскрывать злоумышленникам заголовки, переменные сессии и сервера. Установите localOnly=”true” или отключите эту опцию. tracполностью перед развертыванием, поэтому tracДанные никогда не передаются удаленным пользователям.

Server.Transfer перенаправляет запрос на страницу ошибки на сервере без изменения настроек браузера. URL или совершая круговой маршрут. Response.Redirect отправляет новый запрос в браузер, обновляя URL на страницу ошибки.

Перехватить сообщение об исключении, вывести его в стек. tracе, запрошено URLметка времени и контекст пользователя. Эти детали позволяют разработчикам воспроизвести ошибку позже. Метод Server.GetLastError в Application_Error предоставляет доступ к исключению, чтобы вы могли записать его в файл или базу данных.

Подведем итог этой публикации следующим образом: