Ниво на страница в Asp.Net Tracинг, отстраняване на грешки, обработка на грешки

⚡ Умно обобщение

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

  • ???? Отстраняване на грешки: Точките на прекъсване във Visual Studio спират изпълнението, за да можете да проверявате работеща ASP.NET страница ред по ред.
  • ???? TracING: Разрешаването trace в web.config добавя trace.axd, който изброява всяка заявка, нейния код на състояние и време.
  • 📄 страница TracING: Добавянето Trace=”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?

Приложение tracING позволява да се види дали някоя от заявените страници е довела до грешка. Когато tracе активирано, допълнителна страница, наречена trace.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

Ниво на страница TracING В 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 предоставя изключението, така че можете да го запишете във файл или база данни.

Обобщете тази публикация с: