Razina stranice Asp.Net-a Tracing, otklanjanje pogrešaka, rukovanje greškama

⚡ Pametni sažetak

ASP.NET otklanjanje pogrešaka, tracObrada i rukovanje greškama u Visual Studiju pomaže programerima da rano uoče probleme i prate zahtjeve. trace.axd i preusmjeravaju korisnike na prilagođene stranice s pogreškama kada se tijekom razvojnog i produkcijskog ciklusa dogode neobrađene iznimke.

  • 🐞 Otklanjanje pogrešaka: Točke prekida u Visual Studiju pauziraju izvršavanje tako da možete pregledati ASP.NET stranicu koja se izvršava redak po redak.
  • 🔎 TracING: omogućavanje trace u web.config dodaje trace.axd, koja navodi svaki zahtjev, njegov statusni kod i vrijeme.
  • 📄 Stranica TracING: Dodavanje Trace=”true” u direktivi Page prikazuje vrijeme životnog ciklusa za jednu stranicu.
  • 🚧 Prilagođene pogreške: Oznaka customErrors preusmjerava korisnike na prijateljsku stranicu s pogreškom kada aplikacija ne uspije.
  • 🧭 Neobrađene iznimke: Application_Error u Global.asax hvata neočekivane pogreške i preusmjerava na sigurnu stranicu.
  • 🗃️ Zapisivanje pogrešaka: Zapisivanje detalja Server.GetLastError u datoteku bilježi probleme za kasnije otklanjanje pogrešaka.

Razina ASP.NET stranice Tracing, otklanjanje pogrešaka i rukovanje greškama

U bilo kojoj aplikaciji sigurno će se pojaviti pogreške tijekom procesa razvoja. Važno je moći otkriti pogreške u ranoj fazi.

U Visual Studiju je to moguće za ASP.NET aplikacije. Visual Studio se koristi za otklanjanje pogrešaka i ima tehnike rukovanja greškama za ASP.NET.

Što je otklanjanje pogrešaka u ASP.NET-u?

Otklanjanje grešaka je proces dodavanja točaka prekida aplikaciji. Ove točke prekida koriste se za pauziranje izvršavanja programa koji se izvršava. To omogućuje programeru da razumije što se događa u programu u određenom trenutku.

Uzmimo primjer programa. Program korisniku prikazuje niz znakova „Ispravljanje pogrešaka“. Pretpostavimo da se, kada pokrenemo aplikaciju, niz znakova iz nekog razloga ne prikazuje. Kako bismo identificirali problem, moramo dodati točku prekida. Možemo dodati točku prekida u redak koda koji prikazuje niz znakova. Ova točka prekida će pauzirati izvršavanje programa. U ovom trenutku programer može vidjeti što možda nije u redu. Programer u skladu s tim ispravlja program.

Ovdje u primjeru koristit ćemo našu DemoApplication koja je kreirana u prethodnim poglavljima. U sljedećem primjeru vidjet ćemo:

  • Kako učiniti da demo aplikacija prikazuje niz.
  • Kako dodati prijelomne točke aplikaciji.
  • Kako otkloniti pogreške u aplikaciji pomoću ove prijelomne točke.

Kako otkloniti greške u aplikaciji u ASP.NET-u

U nastavku su navedeni koraci za izradu demo aplikacije, dodavanje točaka prekida i ispravljanje pogrešaka u ASP.NET-u:

Korak 1) Otvorite aplikaciju u Visual Studiju.
Prvo se pobrinimo da je naša web aplikacija otvorena u Visual Studiju. Provjerite je li DemoApplication otvorena u Visual Studiju.

Debugirajte aplikaciju u ASP.NET-u

Korak 2) Sada otvorite datoteku Demo.aspx.cs i dodajte donju liniju koda.

  • Upravo dodajemo liniju koda Response.Write za prikaz niza.
  • Dakle, kada se aplikacija pokrene, trebala bi prikazati niz "We are debugging" u web pregledniku.

Debugirajte aplikaciju u ASP.NET-u

namespace DemoApplication
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("We are debugging");
        }
    }
}

Korak 3) Dodajte točku prekida u aplikaciju.
Prijelomna točka je točka u Visual Studiju na kojoj želite da se zaustavi izvođenje programa.

Debugirajte aplikaciju u ASP.NET-u

  1. Za dodavanje točke prekida, morate kliknuti na stupac u koji želite umetnuti točku prekida. Dakle, u našem slučaju želimo da se naš program zaustavi na retku koda „Response.Write“. Ne morate dodavati nikakvu naredbu za dodavanje točke prekida. Samo trebate kliknuti na redak u koji želite dodati točku prekida.
  2. Kada to učinite, primijetit ćete da je kod označen crvenom bojom. Također, crveni oblačić pojavljuje se u stupcu pokraj retka koda.

Bilješka: U aplikaciji možete dodati više točaka prekida.

Korak 4) Pokrenite aplikaciju u načinu rada za otklanjanje pogrešaka.
Sada morate pokrenuti svoju aplikaciju koristeći način otklanjanja pogrešaka. U Visual Studio odaberite opciju izbornika Debug->Start Debugging.

Debugirajte aplikaciju u ASP.NET-u

Izlaz:-

Debugirajte aplikaciju u ASP.NET-u

Kada sve korake izvedete ispravno, izvršenje programa će se prekinuti. Visual Studio će otići do prijelomne točke i žutom bojom označiti liniju koda.

Sada, ako programer osjeti da kod nije točan, izvođenje se može zaustaviti. Kod se tada može u skladu s tim modificirati. Za nastavak programa, programer mora pritisnuti tipku F5 na tipkovnici.

Što je Tracradite u ASP.NET-u?

primjena tracing. omogućuje pregled jesu li neke od traženih stranica rezultirale pogreškom. Kada tracomogućena je dodatna stranica pod nazivom tracDatoteka e.axd dodaje se aplikaciji (vidi sliku ispod). Ova stranica je priložena aplikaciji i prikazivat će sve zahtjeve i njihov status.

Tracu ASP.NET-u

Kako omogućiti Tracza aplikaciju u ASP.NET-u

Pogledajmo kako omogućiti tracing za ASP.NET aplikacija:

Korak 1) Radimo na našoj DemoApplication. Otvorite datoteku web.config iz Solution Explorera.

Omogući tracza aplikaciju u ASP.NET-u

Korak 2) Dodajte donji redak koda u datoteku web.config. trace-izjava se koristi za omogućavanje tracza prijavu.

  • RequestLimit u tracIzjava određuje broj zahtjeva za stranicu koji moraju biti traced.
  • U našem primjeru dajemo ograničenje od 40. Dajemo ograničenje jer će viša vrijednost smanjiti performanse aplikacije.

Omogući tracza aplikaciju u ASP.NET-u

<?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>

Pokrenite DemoApplication u Visual Studiju.

Izlaz:-

Omogući tracza aplikaciju u ASP.NET-u

Ako sada pregledate URL http://localhost:53003/trace.axd, vidjet ćete informacije za svaki zahtjev. Ovdje možete vidjeti jesu li se u aplikaciji pojavile pogreške. Na stranici su prikazane sljedeće vrste informacija:

  1. Vrijeme zahtjeva za web stranicu.
  2. Naziv web stranice koja se traži.
  3. Statusni kod web zahtjeva (statusni kod 200 znači da je zahtjev uspješan).
  4. Veza Prikaži detalje omogućuje vam pregled više detalja o web zahtjevu. Jedan važan detalj su informacije u zaglavlju koje pokazuju koje se informacije šalju u zaglavlju svakog web zahtjeva.

Omogući tracza aplikaciju u ASP.NET-u

Razina stranice Tracu ASP.NET-u

Razina stranice Tracing. U ASP.NET-u prikazuje sve opće informacije o web stranici kada se obrađuje. To je korisno pri otklanjanju pogrešaka ako stranica iz bilo kojeg razloga ne radi. Visual Studio pruža detaljne informacije o raznim aspektima stranice, kao što je vrijeme za svaku metodu koja se poziva u web zahtjevu.

Na primjer, ako vaša web aplikacija ima problema s performansama, ove informacije mogu pomoći u otklanjanju pogrešaka. Ove se informacije prikazuju kada se aplikacija pokrene u Visual Studiju.

Kako omogućiti Tracna razini stranice u ASP.NET-u

Pogledajmo kako omogućiti razinu stranice tracza ASP.NET aplikaciju:

Korak 1) Radimo na našoj DemoApplication. Otvorite datoteku demo.aspx iz Solution Explorera.

Razina stranice Tracu ASP.NET-u

Korak 2) Dodajte donji redak koda kako biste omogućili stranicu tracing. U deklaraciji stranice samo dodajte atribut Trace=”true”. Ovaj redak koda omogućit će tracing..

Razina stranice Tracu ASP.NET-u

<%@ 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>

Pokrenite aplikaciju u Visual Studio.

Izlaz:-

Razina stranice Tracu ASP.NET-u

Sada kada se prikaže web stranica Demo.aspx, dobit ćete mnogo informacija o stranici. Informacije poput vremena za svaki aspekt životnog ciklusa stranice prikazane su na ovoj stranici.

Rješavanje pogrešaka: Prikaz prilagođene stranice s pogreškama

In ASP.NET, možete imati prilagođene stranice s pogreškama prikazane korisnicima. Ako aplikacija sadrži bilo kakvu pogrešku, prilagođena stranica prikazat će tu pogrešku korisniku.

U našem primjeru, prvo ćemo dodati HTML stranicu. Ova stranica će korisniku prikazati niz znakova „Istraživamo problem“. Zatim ćemo na našu demo.aspx stranicu dodati kod pogreške kako bi se prikazala stranica s pogreškom. Slijedimo dolje navedene korake.

Korak 1) Radimo na našoj DemoAplikaciji. Dodajmo HTML stranicu aplikaciji.

  1. Desnom tipkom miša kliknite na DemoApplication u Solution Exploreru.
  2. Odaberite opciju izbornika Dodaj->HTML stranica.

Obrada grešaka u ASP.NET-u

Korak 2) U sljedećem koraku moramo dati naziv novoj HTML stranici.

  1. Navedite naziv kao ErrorPage.
  2. Pritisnite gumb OK za nastavak.

Obrada grešaka u ASP.NET-u

Korak 3) Stranica s pogreškom (ErrorPage) će se automatski otvoriti u Visual Studiju. Ako odete u Solution Explorer, vidjet ćete dodanu datoteku.

Obrada grešaka u ASP.NET-u

Dodajte redak koda „Razmatramo problem“ na HTML stranicu. Ne morate zatvoriti HTML datoteku prije nego što izvršite promjenu u datoteci web.config.

Obrada grešaka u ASP.NET-u

<!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>

Korak 4) Sada trebate napraviti promjenu u datoteci web.config. Ova promjena će obavijestiti da se prilikom svake pogreške u aplikaciji mora prikazati prilagođena stranica s pogreškom. Oznaka customErrors omogućuje definiranje prilagođene stranice s pogreškom. Svojstvo defaultRedirect postavljeno je na naziv naše prilagođene stranice s pogreškom stvorene u prethodnom koraku.

Obrada grešaka u ASP.NET-u

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime targetFramework="4.0" />

        <customErrors mode="On" defaultRedirect="ErrorPage.html">
        </customErrors>

    </system.web>
</configuration>

Korak 5) Sada dodajmo neispravan kod na stranicu demo.aspx.cs. Otvorite ovu stranicu dvostrukim klikom na datoteku u Solution Exploreru.

Obrada grešaka u ASP.NET-u

Dodajte donji kod u datoteku Demo.aspx.cs.

  • Ovi redci koda su dizajnirani za čitanje redaka teksta iz datoteke.
  • Datoteka bi se trebala nalaziti na D disku pod nazivom Example.txt.
  • Ali u našoj situaciji ta datoteka zapravo ne postoji. Stoga će ovaj kod rezultirati pogreškom kada se aplikacija pokrene.

Obrada grešaka u ASP.NET-u

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);
        }
    }
}

Sada izvršite kod Visual Studio i trebali biste dobiti donji izlaz.

Izlaz:-

Obrada grešaka u ASP.NET-u

Gornja stranica pokazuje da je u aplikaciji došlo do pogreške. Kao rezultat toga, korisniku se prikazuje stranica ErrorPage.html.

ASP.NET neobrađena iznimka

Čak i u najboljim scenarijima, mogu se dogoditi slučajevi pogrešaka koje jednostavno nisu predviđene. Pretpostavimo da korisnik pregledava pogrešnu stranicu u aplikaciji. To je nešto što se ne može predvidjeti. U takvim slučajevima, ASP.NET može preusmjeriti korisnika na ErrorPage.html.

Pogledajmo primjer ovoga.

  • Koristit ćemo našu istu DemoApplication koja ima ErrorPage.html.
  • I pokušat ćemo vidjeti web stranicu koja ne postoji u našoj aplikaciji.
  • U ovom slučaju trebali bismo biti preusmjereni na našu stranicu ErrorPage.html. Pogledajmo korake za postizanje toga.

Korak 1) Radimo na našoj DemoApplication. Otvorite datoteku Global.asax.cs iz Solution Explorera.

ASP.NET neobrađena iznimka

Bilješka: Datoteka Global.asax.cs koristi se za dodavanje koda koji će biti primjenjiv na svim stranicama u aplikaciji.

Korak 2) Dodajte donji redak koda u Global.asax.cs. Ovi će se naredbe koristiti za provjeru pogrešaka i prikaz stranice ErrorPage.html u skladu s tim.

ASP.NET neobrađena iznimka

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 Obrazloženje:-

  1. Prvi redak je rukovatelj događajem Application_Error. Ovaj događaj se poziva kad god se dogodi greška u aplikaciji. Imajte na umu da naziv događaja mora biti Application_Error, a parametri trebaju biti kao što je prikazano gore.
  2. Zatim definiramo objekt klase tipa HttpException. Ovo je standardni objekt koji će sadržavati sve pojedinosti pogreške. Zatim koristimo metodu Server.GetLastError da dobijemo sve pojedinosti o zadnjoj pogrešci koja se dogodila u aplikaciji.
  3. Zatim provjeravamo je li kod pogreške posljednje pogreške 404 (kod pogreške 404 je standardni kod koji se vraća kada korisnik pregledava stranicu koja nije pronađena). Nakon toga preusmjeravamo korisnika na stranicu ErrorPage.html ako se kod pogreške podudara.

Sada pokrenite kod u Visual Studiju i trebali biste dobiti donji izlaz.

Izlaz:-

Pregledajte stranicu http://localhost:53003/Demo1.aspx. Zapamtite da Demo1.aspx ne postoji u našoj aplikaciji. Tada ćete dobiti donji izlaz.

Neobrađena iznimka u ASP.NET-u

Gornja stranica pokazuje da je u aplikaciji došlo do pogreške. Kao rezultat toga, korisniku se prikazuje stranica ErrorPage.html.

Zapisivanje pogrešaka u ASP.NET-u

Zapisivanjem pogrešaka aplikacije pomaže se programeru da kasnije otkloni pogreške i riješi ih. ASP.NET ima mogućnost zapisivanja pogrešaka. To se radi u datoteci Global.asax.cs kada se pogreška zabilježi. Tijekom procesa zapisivanja, poruka o pogrešci može se zapisati u datoteku zapisnika.

Pogledajmo primjer ovoga.

  • Koristit ćemo našu istu DemoApplication koja ima ErrorPage.html.
  • I pokušat ćemo vidjeti web stranicu koja ne postoji u našoj aplikaciji.
  • U ovom bismo slučaju trebali biti preusmjereni na našu stranicu ErrorPage.html.
  • I istovremeno ćemo zapisati poruku o pogrešci u datoteku zapisnika. Pogledajmo korake za postizanje ovoga.

Korak 1) Radimo na našoj DemoApplication. Otvorite datoteku Global.asax.cs iz Solution Explorera.

ASP.NET Zapisivanje pogrešaka

Korak 2) Dodajte donji redak koda u Global.asax.cs. Provjerit će ima li pogrešaka i u skladu s tim prikazati stranicu ErrorPage.html. Također, istovremeno ćemo zabilježiti detalje pogreške u datoteku pod nazivom AllErrors.txt. Za naš primjer, napisat ćemo kod za stvaranje ove datoteke na D disku.

ASP.NET Zapisivanje pogrešaka

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 Obrazloženje:-

  1. Prvi redak je za dobivanje same greške korištenjem metode Server.GetLastError. To se zatim dodjeljuje varijabli exc.
  2. Zatim stvaramo praznu varijablu tipa string pod nazivom str. Stvarnu poruku o pogrešci dobivamo pomoću svojstva exc.Message. Svojstvo exc.Message sadržavat će točnu poruku za bilo koju pogrešku koja se dogodi prilikom pokretanja aplikacije. To se zatim dodjeljuje varijabli tipa string.
  3. Zatim definiramo datoteku pod nazivom AllErrors.txt. Ovdje će se slati sve poruke o pogreškama. U ovu datoteku upisujemo niz znakova str koji sadrži sve poruke o pogreškama.
  4. Na kraju, prebacujemo korisnika u datoteku ErrorPage.html.

Izlaz:-

Pregledajte stranicu http://localhost:53003/Demo1.aspx. Zapamtite da Demo1.aspx ne postoji u našoj aplikaciji. Tada ćete dobiti donji izlaz.

ASP.NET Zapisivanje pogrešaka

I istovremeno, ako otvorite datoteku AllErrors.txt, vidjet ćete dolje navedene informacije.

ASP.NET Zapisivanje pogrešaka

Poruka o pogrešci može se kasnije proslijediti razvojnom programeru u svrhu otklanjanja pogrešaka.

Pitanja i odgovori

Da. AI alati poput GitHub Copilota mogu predložiti točke prekida, objasniti iznimku i predložiti ispravke za ASP.NET kod. RevPregledajte svaki prijedlog i sami reproducirajte grešku, budući da umjetna inteligencija može pogrešno protumačiti stanje specifično za aplikaciju.

Da. Značajke strojnog učenja u alatima poput Azure Application Insights može automatski označiti neuobičajene skokove u iznimkama ili sporim zahtjevima. To pomaže timovima da brže pronađu probleme u produkciji nego ručnim skeniranjem sirovih datoteka zapisnika.

Ne. Napuštanjem customErrors načina rada otkriva se stog. traci osjetljive detalje svakom posjetitelju, što predstavlja sigurnosni rizik. Koristite način rada Samo udaljeno ili Uključeno u produkciji kako bi samo lokalni programeri vidjeli sve detalje o pogrešci.

RemoteOnly prikazuje detaljne stranice s pogreškama samo preglednicima na lokalnom poslužitelju, dok se udaljeni korisnici šalju na defaultRedirect stranicu. To je sigurno srednje rješenje za otklanjanje pogrešaka na aktivnoj web stranici bez curenja informacija.

Postavite debug=”false” u elementu kompilacije web.config. Način rada za ispravljanje pogrešaka onemogućuje optimizacije, održava duga vremenska ograničenja i povećava korištenje memorije, pa bi produkcijske stranice uvijek trebale biti isključene u Visual Studio.

Ne. Otvoreno trace.axd može otkriti zaglavlja, sesije i varijable poslužitelja napadačima. Postavite localOnly=”true” ili onemogućite. tracu potpunosti prije raspoređivanja tako tracPodaci nikada nisu izloženi udaljenim korisnicima.

Server.Transfer prosljeđuje zahtjev na stranicu s pogreškom na poslužitelju bez promjene preglednika URL ili kružno putovanje. Response.Redirect šalje novi zahtjev pregledniku, ažurirajući URL na stranicu s pogreškom.

Snimi poruku o iznimci, složi trace, zatraženo URL, vremenska oznaka i korisnički kontekst. Ovi detalji omogućuju programerima da kasnije reproduciraju kvar. Server.GetLastError u Application_Error otkriva iznimku tako da je možete zapisati u datoteku ili bazu podataka.

Sažmite ovu objavu uz: