Nivel de pagină Asp.Net TracDepanare, Tratarea erorilor

⚡ Rezumat inteligent

Depanare ASP.NET, tracgestionarea erorilor în Visual Studio îi ajută pe dezvoltatori să identifice problemele din timp, să urmărească solicitările până la capăt trace.axd și redirecționează utilizatorii către pagini de eroare personalizate atunci când apar excepții netratate în timpul ciclului de viață al dezvoltării și producției.

  • ???? Depanare: Punctele de întrerupere din Visual Studio întrerup execuția, astfel încât să puteți inspecta o pagină ASP.NET linie cu linie.
  • 🔎 TracING: Activarea trace în web.config adaugă trace.axd, care listează fiecare solicitare, codul de stare și momentul apariției.
  • 📄 Pagină TracING: Adăugare TracValoarea e=”true” din directiva Page arată durata ciclului de viață pentru o singură pagină.
  • 🚧 Erori personalizate: Eticheta customErrors redirecționează utilizatorii către o pagină de eroare prietenoasă atunci când aplicația eșuează.
  • 🧭 Excepții netratate: Application_Error din Global.asax detectează erori neașteptate și redirecționează către o pagină sigură.
  • 🗃️ Înregistrare erori: Scrierea detaliilor Server.GetLastError într-un fișier înregistrează problemele pentru depanare ulterioară.

Nivel de pagină ASP.NET TracDepanare și tratare a erorilor

În orice aplicație, erorile sunt obligate să apară în timpul procesului de dezvoltare. Este important să puteți descoperi erorile într-un stadiu incipient.

În Visual Studio, este posibil să se facă acest lucru pentru aplicațiile ASP.NET. Visual Studio este utilizat pentru depanare și are tehnici de gestionare a erorilor pentru ASP.NET.

Ce este Depanarea în ASP.NET?

Depanarea este procesul de adăugare a punctelor de întrerupere (breakpoints) la o aplicație. Aceste puncte de întrerupere sunt folosite pentru a întrerupe execuția unui program care rulează. Acest lucru permite dezvoltatorului să înțeleagă ce se întâmplă într-un program la un anumit moment.

Să luăm un exemplu de program. Programul afișează utilizatorului un șir de caractere „Depanăm”. Să presupunem că atunci când rulăm aplicația, dintr-un anumit motiv, șirul de caractere nu este afișat. Pentru a identifica problema, trebuie să adăugăm un punct de întrerupere. Putem adăuga un punct de întrerupere la linia de cod care afișează șirul de caractere. Acest punct de întrerupere va întrerupe execuția programului. În acest moment, programatorul poate vedea ce este posibil să meargă greșit. Programatorul rectifică programul în consecință.

Aici, în exemplu, vom folosi aplicația noastră Demo, creată în capitolele anterioare. În exemplul următor, vom vedea:

  • Cum să faci ca aplicația demo să afișeze un șir.
  • Cum să adăugați puncte de întrerupere la o aplicație.
  • Cum să depanați aplicația folosind acest punct de întrerupere.

Cum să depanați o aplicație în ASP.NET

Mai jos sunt pașii pentru a crea o aplicație demo, a adăuga puncte de întrerupere și a depana în ASP.NET:

Pasul 1) Deschideți aplicația în Visual Studio.
Să ne asigurăm mai întâi că avem aplicația web deschisă în Visual Studio. Asigurați-vă că DemoApplication este deschisă în Visual Studio.

Depanați o aplicație în ASP.NET

Pasul 2) Acum deschideți fișierul Demo.aspx.cs și adăugați linia de cod de mai jos.

  • Adăugăm doar linia de cod Response.Write pentru a afișa un șir.
  • Deci, atunci când aplicația se execută, ar trebui să afișeze șirul „Depanăm” în browserul web.

Depanați o aplicație în 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");
        }
    }
}

Pasul 3) Adăugați un punct de întrerupere (breakpoint) la aplicație.
Un punct de întrerupere este un punct în Visual Studio în care doriți să se oprească execuția programului.

Depanați o aplicație în ASP.NET

  1. Pentru a adăuga un punct de întrerupere, trebuie să faceți clic pe coloana în care doriți să fie inserat punctul de întrerupere. Așadar, în cazul nostru, dorim ca programul nostru să se oprească la linia de cod „Response.Write”. Nu este nevoie să adăugați nicio comandă pentru a adăuga un punct de întrerupere. Trebuie doar să faceți clic pe linia pe care doriți să adăugați un punct de întrerupere.
  2. Odată ce ați făcut acest lucru, veți observa că codul este marcat cu roșu. De asemenea, un balon roșu apare în coloana de lângă linia de cod.

Notă: Puteți adăuga mai multe puncte de întrerupere într-o aplicație.

Pasul 4) Rulați aplicația în modul Depanare.
Acum trebuie să rulați aplicația folosind Modul de depanare. În Visual Studio, alegeți opțiunea de meniu Debug->Start Debugging.

Depanați o aplicație în ASP.NET

Ieșire: -

Depanați o aplicație în ASP.NET

Când efectuați corect toți pașii, execuția programului se va întrerupe. Visual Studio va merge la punctul de întrerupere și va marca linia de cod în galben.

Acum, dacă programatorul consideră că codul este incorect, execuția poate fi oprită. Codul poate fi apoi modificat în consecință. Pentru a continua cu programul, programatorul trebuie să facă clic pe butonul F5 de pe tastatură.

Ce Este Traclucrezi în ASP.NET?

Aplicatii tracING permite verificarea dacă vreo pagină solicitată are ca rezultat o eroare. Când tracing este activat, apare o pagină suplimentară numită tracFișierul e.axd este adăugat în aplicație (vezi imaginea de mai jos). Această pagină este atașată aplicației și va afișa toate cererile și starea acestora.

Tracîn ASP.NET

Cum se activează Tracpentru o aplicație în ASP.NET

Să vedem cum să activăm traccăutând un Aplicație ASP.NET:

Pas 1) Haideți să lucrăm la aplicația noastră demonstrativă. Deschideți fișierul web.config din Solution Explorer.

Permite tracpentru o aplicație în ASP.NET

Pas 2) Adăugați linia de cod de mai jos în fișierul web.config. tracInstrucțiunea e este utilizată pentru a activa tracpentru aplicație.

  • Limita de solicitare din tracInstrucțiunea e specifică numărul de solicitări de pagini care trebuie să fie traced.
  • În exemplul nostru, stabilim o limită de 40. O stabilim deoarece o valoare mai mare va degrada performanța aplicației.

Permite tracpentru o aplicație în 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>

Executați aplicația Demo în Visual Studio.

Ieșire: -

Permite tracpentru o aplicație în ASP.NET

Dacă acum navigați la URL http://localhost:53003/trace.axd, veți vedea informațiile pentru fiecare solicitare. Aici puteți vedea dacă apar erori într-o aplicație. Următoarele tipuri de informații sunt afișate pe pagină:

  1. Ora solicitării pentru pagina web.
  2. Numele paginii web solicitate.
  3. Codul de stare al solicitării web (un cod de stare 200 înseamnă că solicitarea a avut succes).
  4. Linkul „Vizualizare detalii” vă permite să vizualizați mai multe detalii despre solicitarea web. Un detaliu important furnizat este reprezentat de informațiile din antet, care arată ce informații sunt trimise în antetul fiecărei solicitări web.

Permite tracpentru o aplicație în ASP.NET

Nivelul paginii Tracîn ASP.NET

Nivelul paginii TracING În ASP.NET, se afișează toate informațiile generale despre o pagină web atunci când este procesată. Acest lucru este util în depanare dacă o pagină nu funcționează din orice motiv. Visual Studio oferă informații detaliate despre diverse aspecte ale paginii, cum ar fi timpul pentru fiecare metodă apelată în cererea web.

De exemplu, dacă aplicația web are o problemă de performanță, aceste informații pot ajuta la depanarea problemei. Aceste informații sunt afișate atunci când aplicația rulează în Visual Studio.

Cum se activează Tracla nivel de pagină în ASP.NET

Să vedem cum se activează la nivel de pagină tracpentru o aplicație ASP.NET:

Pas 1) Haideți să lucrăm la aplicația noastră Demo. Deschideți fișierul demo.aspx din Exploratorul de soluții.

Nivelul paginii Tracîn ASP.NET

Pas 2) Adăugați linia de cod de mai jos pentru a activa pagina tracing. În declarația Page, adăugați pur și simplu atributul Trace=”true”. Această linie de cod va permite accesul la nivel de pagină tracING.

Nivelul paginii Tracîn 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>

Rulați aplicația în Visual Studio.

Ieșire: -

Nivelul paginii Tracîn ASP.NET

Acum, când este afișată pagina web Demo.aspx, veți obține o mulțime de informații despre pagină. Pe această pagină sunt afișate informații precum timpul pentru fiecare aspect al ciclului de viață al paginii.

Gestionarea erorilor: afișarea unei pagini de eroare personalizată

In ASP.NET, puteți avea pagini de eroare personalizate afișate utilizatorilor. Dacă o aplicație conține orice fel de eroare, o pagină personalizată va afișa această eroare utilizatorului.

În exemplul nostru, vom adăuga mai întâi o pagină HTML. Această pagină va afișa utilizatorului un șir de caractere „Investigăm problema”. Apoi vom adăuga un cod de eroare pe pagina noastră demo.aspx, astfel încât pagina de eroare să fie afișată. Să urmăm pașii menționați mai jos.

Pas 1) Să lucrăm la aplicația noastră demonstrativă. Să adăugăm o pagină HTML aplicației.

  1. Faceți clic dreapta pe DemoApplication în Solution Explorer.
  2. Selectați opțiunea de meniu Adăugare->Pagină HTML.

Gestionarea erorilor în ASP.NET

Pas 2) În pasul următor, trebuie să oferim un nume noii pagini HTML.

  1. Furnizați numele ca ErrorPage.
  2. Faceți clic pe butonul OK pentru a continua.

Gestionarea erorilor în ASP.NET

Pas 3) Pagina de eroare se va deschide automat în Visual Studio. Dacă accesați Exploratorul de soluții, veți vedea fișierul adăugat.

Gestionarea erorilor în ASP.NET

Adăugați linia de cod „Investigăm problema” la pagina HTML. Nu este nevoie să închideți fișierul HTML înainte de a face modificarea în fișierul web.config.

Gestionarea erorilor în 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>

Pas 4) Acum trebuie să faceți o modificare în fișierul web.config. Această modificare va notifica că, de fiecare dată când apare o eroare în aplicație, pagina de eroare personalizată trebuie afișată. Eticheta customErrors permite definirea unei pagini de eroare personalizate. Proprietatea defaultRedirect este setată la numele paginii noastre de eroare personalizate create în pasul anterior.

Gestionarea erorilor în 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>

Pas 5) Acum haideți să adăugăm niște cod defect la pagina demo.aspx.cs. Deschideți această pagină făcând dublu clic pe fișier în Solution Explorer.

Gestionarea erorilor în ASP.NET

Adăugați codul de mai jos în fișierul Demo.aspx.cs.

  • Aceste linii de cod sunt concepute pentru a citi liniile de text dintr-un fișier.
  • Fișierul ar trebui să fie localizat pe unitatea D cu numele Example.txt.
  • Dar în situația noastră, acest fișier nu există cu adevărat. Deci, acest cod va avea ca rezultat o eroare atunci când aplicația rulează.

Gestionarea erorilor în 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);
        }
    }
}

Acum executați codul în Visual Studio și ar trebui să obțineți rezultatul de mai jos.

Ieșire: -

Gestionarea erorilor în ASP.NET

Pagina de mai sus arată că a fost declanșată o eroare în aplicație. Drept urmare, pagina ErrorPage.html este afișată utilizatorului.

Excepție ASP.NET netratată

Chiar și în cele mai bune scenarii, pot exista cazuri de erori care pur și simplu nu sunt prevăzute. Să presupunem că un utilizator navighează pe pagina greșită din aplicație. Acesta este un lucru care nu poate fi prevăzut. În astfel de cazuri, ASP.NET poate redirecționa utilizatorul către fișierul ErrorPage.html.

Să vedem un exemplu în acest sens.

  • Vom folosi aceeași DemoApplication care are fișierul ErrorPage.html.
  • Și vom încerca să vedem o pagină web care nu există în aplicația noastră.
  • În acest caz, ar trebui să fim redirecționați către pagina noastră ErrorPage.html. Să vedem pașii pentru a realiza acest lucru.

Pas 1) Să lucrăm la aplicația noastră demonstrativă. Deschideți fișierul Global.asax.cs din Solution Explorer.

Excepție ASP.NET netratată

Notă: Fișierul Global.asax.cs este utilizat pentru a adăuga cod care va fi aplicabil în toate paginile aplicației.

Pas 2) Adăugați linia de cod de mai jos la Global.asax.cs. Aceste linii vor fi folosite pentru a verifica erorile și a afișa pagina ErrorPage.html în consecință.

Excepție ASP.NET netratată

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 Explicaţie:-

  1. Prima linie este gestionarea evenimentului Application_Error. Acest eveniment este apelat ori de câte ori apare o eroare într-o aplicație. Rețineți că numele evenimentului trebuie să fie Application_Error, iar parametrii trebuie să fie așa cum se arată mai sus.
  2. În continuare, definim un obiect de tipul clasei HttpException. Acesta este un obiect standard care va deține toate detaliile erorii. Apoi folosim metoda Server.GetLastError pentru a obține toate detaliile ultimei erori care a apărut în aplicație.
  3. Apoi verificăm dacă codul de eroare al ultimei erori este 404 (codul de eroare 404 este codul standard returnat atunci când un utilizator navighează către o pagină care nu a fost găsită). Transferăm apoi utilizatorul către pagina ErrorPage.html dacă codul de eroare se potrivește.

Acum rulați codul în Visual Studio și ar trebui să obțineți rezultatul de mai jos.

Ieșire: -

Răsfoiți pagina http://localhost:53003/Demo1.aspx. Rețineți că Demo1.aspx nu există în aplicația noastră. Veți obține apoi rezultatul de mai jos.

Excepție netratată în ASP.NET

Pagina de mai sus arată că a fost declanșată o eroare în aplicație. Drept urmare, pagina ErrorPage.html este afișată utilizatorului.

Înregistrarea erorilor ASP.NET

Prin înregistrarea erorilor aplicației, dezvoltatorul poate depana și rezolva eroarea ulterior. ASP.NET are funcția de a înregistra erorile. Acest lucru se face în fișierul Global.asax.cs atunci când este capturată eroarea. În timpul procesului de capturare, mesajul de eroare poate fi scris într-un fișier jurnal.

Să vedem un exemplu în acest sens.

  • Vom folosi aceeași DemoApplication care are fișierul ErrorPage.html.
  • Și vom încerca să vedem o pagină web care nu există în aplicația noastră.
  • Ar trebui să fim redirecționați către pagina noastră ErrorPage.html în acest caz.
  • Și, în același timp, vom scrie mesajul de eroare într-un fișier jurnal. Să vedem pașii pentru a realiza acest lucru.

Pas 1) Să lucrăm la aplicația noastră demonstrativă. Deschideți fișierul Global.asax.cs din Solution Explorer.

ASP.NET Eroare de înregistrare

Pas 2) Adăugați linia de cod de mai jos la fișierul Global.asax.cs. Acesta va verifica dacă există erori și va afișa pagina ErrorPage.html în consecință. De asemenea, în același timp, vom înregistra detaliile erorii într-un fișier numit AllErrors.txt. Pentru exemplul nostru, vom scrie cod pentru a crea acest fișier pe unitatea D.

ASP.NET Eroare de înregistrare

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 Explicaţie:-

  1. Prima linie este pentru a obține eroarea în sine folosind metoda Server.GetLastError. Aceasta este apoi atribuită variabilei exc.
  2. Apoi creăm o variabilă de tip șir de caractere goală numită str. Obținem mesajul de eroare real folosind proprietatea exc.Message. Proprietatea exc.Message va conține mesajul exact pentru orice eroare care apare la rularea aplicației. Acesta este apoi atribuit variabilei de tip șir de caractere.
  3. Apoi, definim fișierul numit AllErrors.txt. Aici vor fi trimise toate mesajele de eroare. Scriem în acest fișier șirul de caractere str care conține toate mesajele de eroare.
  4. În cele din urmă, transferăm utilizatorul în fișierul ErrorPage.html.

Ieșire: -

Răsfoiți pagina http://localhost:53003/Demo1.aspx. Rețineți că Demo1.aspx nu există în aplicația noastră. Veți obține apoi rezultatul de mai jos.

ASP.NET Eroare de înregistrare

Și, în același timp, dacă deschideți fișierul AllErrors.txt, veți vedea informațiile de mai jos.

ASP.NET Eroare de înregistrare

Mesajul de eroare poate fi apoi transmis dezvoltatorului la un moment ulterior în timp, în scopuri de depanare.

Întrebări frecvente

Da. Instrumentele de inteligență artificială, cum ar fi GitHub Copilot, pot sugera puncte de întrerupere, pot explica o excepție și pot propune remedieri pentru codul ASP.NET. RevVizualizați fiecare sugestie și reproduceți singur eroarea, deoarece inteligența artificială poate interpreta greșit starea specifică aplicației.

Da. Funcții de învățare automată în instrumente precum Azure Application Insights poate semnala automat vârfurile neobișnuite ale excepțiilor sau solicitările lente. Acest lucru ajută echipele să găsească problemele de producție mai rapid decât scanarea manuală a fișierelor jurnal brute.

Nu. Dacă se lasă modul customErrors dezactivat, se expune stiva. tracerori și detalii sensibile pentru fiecare vizitator, ceea ce reprezintă un risc de securitate. Folosiți modul RemoteOnly sau On în producție, astfel încât doar dezvoltatorii locali să vadă detaliile complete ale erorii.

RemoteOnly afișează pagini de eroare detaliate doar browserelor de pe serverul local, în timp ce utilizatorii la distanță sunt direcționați către pagina defaultRedirect. Este o soluție sigură pentru depanarea unui site live fără scurgeri de informații.

Setați debug=”false” în elementul de compilare al fișierului web.config. Modul de depanare dezactivează optimizările, menține timeout-urile lungi și mărește utilizarea memoriei, așa că site-urile de producție ar trebui să livreze întotdeauna cu acesta dezactivat în Visual Studio.

Nu. Un deschis trace.axd poate dezvălui atacatorilor anteturi, variabile de sesiune și variabile de server. Setați localOnly=”true” sau dezactivați. traccomplet înainte de implementare, astfel încât tracDatele electronice nu sunt niciodată expuse utilizatorilor la distanță.

Server.Transfer redirecționează cererea către pagina de eroare de pe server fără a schimba browserul URL sau efectuând o călătorie dus-întors. Response.Redirect trimite o nouă solicitare către browser, actualizând URL la pagina de eroare.

Capturați mesajul de excepție, stivați trace, solicitat URL, marcaj temporal și contextul utilizatorului. Aceste detalii permit dezvoltatorilor să reproducă eroarea ulterior. Server.GetLastError din Application_Error expune excepția, astfel încât să o puteți scrie într-un fișier sau într-o bază de date.

Rezumați această postare cu: