Рівень сторінки 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 виберіть пункт меню Debug->Start Debugging.

Налагодження програми в 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) Давайте попрацюємо над нашим DemoApplication. Відкрийте файл web.config з Solution Explorer.

включити tracдля програми в ASP.NET

Крок 2) Додайте наведений нижче рядок коду до файлу web.config. tracЕлектронна заява використовується для активації 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>

Запустіть демонстраційну програму (DemoApplication) у 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) Давайте попрацюємо над нашим DemoApplication. Відкрийте файл demo.aspx з Solution Explorer.

Рівень сторінки 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 у Solution Explorer.
  2. Виберіть пункт меню Додати->HTML-сторінка.

Обробка помилок в ASP.NET

Крок 2) На наступному кроці нам потрібно дати назву новій HTML-сторінці.

  1. Вкажіть назву як ErrorPage.
  2. Натисніть кнопку OK, щоб продовжити.

Обробка помилок в ASP.NET

Крок 3) Сторінка помилки автоматично відкриється у Visual Studio. Якщо ви перейдете до Solution Explorer, ви побачите доданий файл.

Обробка помилок в 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. Відкрийте цю сторінку, двічі клацнувши файл у Solution Explorer.

Обробка помилок в 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.

Давайте розглянемо приклад цього.

  • Ми будемо використовувати той самий DemoApplication, який має ErrorPage.html.
  • І ми спробуємо переглянути веб-сторінку, якої немає в нашій програмі.
  • У цьому випадку нас має перенаправити на сторінку ErrorPage.html. Давайте розглянемо кроки для досягнення цієї мети.

Крок 1) Давайте попрацюємо над нашим DemoApplication. Відкрийте файл Global.asax.cs з Solution Explorer.

Необроблений виняток 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 після фіксації помилки. Під час процесу фіксації повідомлення про помилку можна записати у файл журналу.

Давайте розглянемо приклад цього.

  • Ми будемо використовувати той самий DemoApplication, який має ErrorPage.html.
  • І ми спробуємо переглянути веб-сторінку, якої немає в нашій програмі.
  • У цьому випадку ми повинні бути перенаправлені на нашу сторінку ErrorPage.html.
  • І водночас ми запишемо повідомлення про помилку у файл журналу. Давайте розглянемо кроки для досягнення цієї мети.

Крок 1) Давайте попрацюємо над нашим DemoApplication. Відкрийте файл Global.asax.cs з Solution Explorer.

Журналування помилок 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

Пізніше повідомлення про помилку можна передати розробнику для налагодження.

Поширені запитання

Так. Інструменти штучного інтелекту, такі як GitHub Copilot, можуть пропонувати точки зупинки, пояснювати винятки та пропонувати виправлення для коду ASP.NET. RevПерегляньте кожну пропозицію та відтворіть помилку самостійно, оскільки ШІ може неправильно зчитувати стан, специфічний для програми.

Так. Функції машинного навчання в таких інструментах, як Azure Application Insights може автоматично позначати незвичайні піки винятків або повільні запити. Це допомагає командам швидше знаходити проблеми з виробництвом, ніж сканувати необроблені файли журналів вручну.

Ні. Вихід із режиму customErrors (вимкнено) відкриває стек. tracта конфіденційну інформацію кожному відвідувачу, що становить ризик для безпеки. Використовуйте режим «Тільки віддалено» або «Увімкнено» у продакшені, щоб повну інформацію про помилку бачили лише локальні розробники.

RemoteOnly показує детальні сторінки помилок лише браузерам на локальному сервері, тоді як віддалені користувачі перенаправляються на сторінку defaultRedirect. Це безпечний варіант для налагодження активного сайту без витоку інформації.

Встановіть debug=”false” в елементі компіляції web.config. Режим налагодження вимикає оптимізацію, зберігає тривалі тайм-аути та збільшує використання пам’яті, тому продакшн-сайти завжди повинні постачатися з вимкненим режимом. Visual Studio.

Ні. Відкрита trace.axd може розкривати заголовки, сеанс та змінні сервера зловмисникам. Встановіть localOnly=”true” або вимкніть tracповністю перед розгортанням, тому tracЕлектронні дані ніколи не надаються віддаленим користувачам.

Server.Transfer пересилає запит на сторінку помилки на сервері без зміни браузера URL або здійснюючи зворотний маршрут. Response.Redirect надсилає новий запит до браузера, оновлюючи URL на сторінку помилки.

Зафіксувати повідомлення про виняток, стек tracе, запитував URL, позначка часу та контекст користувача. Ці деталі дозволяють розробникам відтворити помилку пізніше. Server.GetLastError в Application_Error надає доступ до винятку, щоб ви могли записати його у файл або базу даних.

Підсумуйте цей пост за допомогою: