Asp.Net sideniveau Tracing, fejlfinding, fejlhåndtering

⚡ Smart opsummering

ASP.NET fejlfinding, tracog fejlhåndtering i Visual Studio hjÊlper udviklere med at opdage problemer tidligt og fÞlge op på anmodninger trace.axd, og omdiriger brugere til brugerdefinerede fejlsider, når der opstår ubehandlede undtagelser under udviklings- og produktionslivscyklussen.

  • 🐞 Fejlretning: Breakpoints i Visual Studio sÊtter udfÞrelsen pÃ¥ pause, sÃ¥ du kan inspicere en kÞrende ASP.NET-side linje for linje.
  • 🔎 TraciNG: Aktivering trace i web.config tilfÞjer trace.axd, som viser alle anmodninger, deres statuskode og tidspunkt.
  • 📄 Side TraciNG: TilfÞjelse Trac`e="true"` til `page`-direktivet viser livscyklustimingen for en enkelt side.
  • 🚧 Brugerdefinerede fejl: customErrors-tagget omdirigerer brugerne til en brugervenlig fejlside, nÃ¥r applikationen fejler.
  • 🧭 UhÃ¥ndterede undtagelser: Application_Error i Global.asax fanger uventede fejl og omdirigerer til en sikker side.
  • 🗃 Fejllogning: Skrivning af Server.GetLastError-detaljer til en fil registrerer problemer til senere fejlfinding.

ASP.NET sideniveau Tracfejlfinding, fejlfinding og fejlhåndtering

I enhver applikation vil der nÞdvendigvis opstå fejl under udviklingsprocessen. Det er vigtigt at kunne opdage fejl på et tidligt tidspunkt.

I Visual Studio er det muligt at gÞre dette for ASP.NET-applikationer. Visual Studio bruges til fejlfinding og har fejlhåndteringsteknikker til ASP.NET.

Hvad er fejlretning i ASP.NET?

Debugging er processen med at tilfÞje breakpoints til en applikation. Disse breakpoints bruges til at sÊtte udfÞrelsen af ​​et kÞrende program pÃ¥ pause. Dette giver udvikleren mulighed for at forstÃ¥, hvad der sker i et program pÃ¥ et bestemt tidspunkt.

Lad os tage et eksempel pÃ¥ et program. Programmet viser en streng med teksten "Vi fejlfinder" til brugeren. Antag, at nÃ¥r vi kÞrer applikationen, vises strengen af ​​en eller anden grund ikke. For at identificere problemet skal vi tilfÞje et breakpoint. Vi kan tilfÞje et breakpoint til kodelinjen, der viser strengen. Dette breakpoint vil sÊtte programmets udfÞrelse pÃ¥ pause. PÃ¥ dette tidspunkt kan programmÞren se, hvad der muligvis gÃ¥r galt. ProgrammÞren retter programmet i overensstemmelse hermed.

Her i eksemplet bruger vi vores DemoApplication, som blev oprettet i tidligere kapitler. I det fÞlgende eksempel ser vi:

  • SÃ¥dan fÃ¥r du demoapplikationen til at vise en streng.
  • SÃ¥dan tilfÞjer du pausepunkter til en applikation.
  • SÃ¥dan fejlretter du applikationen ved hjÊlp af dette brudpunkt.

SÃ¥dan fejlfindes en applikation i ASP.NET

Nedenfor er trinnene til at lave en demoapplikation, tilfÞje breakpoints og fejlfinde i ASP.NET:

Trin 1) Åbn applikationen i Visual Studio.
Lad os fÞrst sikre os, at vores webapplikation er åben i Visual Studio. SÞrg for, at DemoApplication er åben i Visual Studio.

Debug et program i ASP.NET

Trin 2) Åbn nu filen Demo.aspx.cs og tilfÞj nedenstÃ¥ende kodelinje.

  • Vi tilfÞjer bare kodelinjen Response.Write for at vise en streng.
  • SÃ¥ nÃ¥r applikationen kÞrer, skal den vise strengen "Vi fejlretter" i webbrowseren.

Debug et program i 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");
        }
    }
}

Trin 3) TilfÞj et breakpoint til applikationen.
Et brudpunkt er et punkt i Visual Studio, hvor du Þnsker at udfÞrelsen af ​​programmet skal stoppe.

Debug et program i ASP.NET

  1. For at tilfÞje et breakpoint skal du klikke på den kolonne, hvor du vil indsÊtte breakpointet. Så i vores tilfÊlde Þnsker vi, at vores program stopper ved kodelinjen "Response.Write". Du behÞver ikke at tilfÞje nogen kommando for at tilfÞje et breakpoint. Du skal bare klikke på den linje, hvor du vil tilfÞje et breakpoint.
  2. NÃ¥r dette er gjort, vil du bemÊrke, at koden bliver markeret med rÞdt. Der kommer ogsÃ¥ en rÞd boble op i kolonnen ved siden af ​​kodelinjen.

BemÊrk: Du kan tilfÞje flere breakpoints i en applikation.

Trin 4) KÞr applikationen i fejlfindingstilstand.
Nu skal du kÞre din applikation ved hjÊlp af fejlfindingstilstand. I Visual Studio skal du vÊlge menupunktet Debug->Start Debugging.

Debug et program i ASP.NET

Produktion:-

Debug et program i ASP.NET

NÃ¥r du udfÞrer alle trinene korrekt, vil udfÞrelsen af ​​programmet bryde. Visual Studio vil gÃ¥ til brudpunktet og markere kodelinjen med gult.

Nu, hvis programmÞren fÞler, at koden er forkert, kan udfÞrelsen stoppes. Koden kan derefter Êndres i overensstemmelse hermed. For at fortsÊtte programmet skal programmÞren klikke på F5-knappen på tastaturet.

Hvad er Traci ASP.NET?

Anvendelse tracING giver mulighed for at se, om der er anmodet om en fejl på de sider. tracer aktiveret, en ekstra side kaldet trace.axd tilfÞjes til applikationen (se billedet nedenfor). Denne side er knyttet til applikationen og viser alle anmodninger og deres status.

Traci ASP.NET

SÃ¥dan aktiveres Tractil en applikation i ASP.NET

Lad os se på, hvordan man aktiverer tracing for en ASP.NET-applikation:

Trin 1) Lad os arbejde på vores DemoApplication. Åbn web.config-filen fra Solution Explorer.

Aktiver tractil en applikation i ASP.NET

Trin 2) TilfÞj nedenstående kodelinje til web.config-filen. trace-sÊtning bruges til at aktivere tractil ansÞgningen.

  • AnmodningsgrÊnsen i trace-sÊtningen angiver antallet af sideforespÞrgsler, der skal tracred.
  • I vores eksempel angiver vi en grÊnse pÃ¥ 40. Vi angiver en grÊnse, fordi en hÞjere vÊrdi vil forringe applikationens ydeevne.

Aktiver tractil en applikation i 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>

KÞr demoapplikationen i Visual Studio.

Produktion:-

Aktiver tractil en applikation i ASP.NET

Hvis du nu navigerer til URL http://localhost:53003/trace.axd, vil du se oplysningerne for hver anmodning. Her kan du se, om der opstår fejl i en applikation. FÞlgende typer oplysninger vises på siden:

  1. Tidspunktet for anmodningen om websiden.
  2. Navnet på den webside, der anmodes om.
  3. Statuskoden for webanmodningen (en statuskode på 200 betyder, at anmodningen er gennemfÞrt).
  4. Linket Vis detaljer, som giver dig mulighed for at se flere detaljer om webanmodningen. En vigtig detalje er headeroplysningerne, som viser, hvilke oplysninger der sendes i headeren på hver webanmodning.

Aktiver tractil en applikation i ASP.NET

Sideniveau Traci ASP.NET

Sideniveau TracING I ASP.NET vises alle generelle oplysninger om en webside, når den behandles. Dette er nyttigt til fejlfinding, hvis en side af en eller anden grund ikke fungerer. Visual Studio giver detaljerede oplysninger om forskellige aspekter af siden, f.eks. tiden for hver metode, der kaldes i webanmodningen.

Hvis din webapplikation f.eks. har et problem med ydeevnen, kan disse oplysninger hjÊlpe med at lÞse problemet. Disse oplysninger vises, når applikationen kÞrer i Visual Studio.

Sådan aktiveres Tracpå sideniveau i ASP.NET

Lad os se på, hvordan man aktiverer sideniveau tractil en ASP.NET-applikation:

Trin 1) Lad os arbejde på vores DemoApplication. Åbn demo.aspx-filen fra Solution Explorer.

Sideniveau Traci ASP.NET

Trin 2) TilfÞj nedenstående kodelinje for at aktivere siden tracing. I Page-deklarationen skal du blot tilfÞje attributten Trace="true". Denne kodelinje tillader sideniveau tracIng.

Sideniveau Traci 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>

KÞr programmet i Visual Studio.

Produktion:-

Sideniveau Traci ASP.NET

Nu når websiden Demo.aspx vises, vil du få en hel masse information om siden. Oplysninger såsom tidspunktet for hvert aspekt af sidens livscyklus vises på denne side.

Fejlhåndtering: Viser en brugerdefineret fejlside

In ASP.NET, kan du få vist brugerdefinerede fejlsider til brugerne. Hvis en applikation indeholder nogen form for fejl, vil en brugerdefineret side vise denne fejl til brugeren.

I vores eksempel tilfÞjer vi fÞrst en HTML-side. Denne side viser en streng til brugeren med teksten "Vi undersÞger problemet". Vi tilfÞjer derefter en fejlkode til vores demo.aspx-side, så fejlsiden vises. Lad os fÞlge nedenstående trin.

Trin 1) Lad os arbejde på vores demoapplikation. Lad os tilfÞje en HTML-side til applikationen.

  1. HÞjreklik på DemoApplication i Solution Explorer.
  2. VÊlg menupunktet TilfÞj->HTML-side.

Fejlhåndtering i ASP.NET

Trin 2) I det nÊste trin skal vi give et navn til den nye HTML-side.

  1. Angiv navnet som ErrorPage.
  2. Klik på knappen OK for at fortsÊtte.

Fejlhåndtering i ASP.NET

Trin 3) ErrorPage åbnes automatisk i Visual Studio. Hvis du går til Solution Explorer, vil du se filen tilfÞjet.

Fejlhåndtering i ASP.NET

TilfÞj kodelinjen "Vi undersÞger problemet" til HTML-siden. Du behÞver ikke at lukke HTML-filen, fÞr du foretager Êndringen af ​​web.config-filen.

Fejlhåndtering i 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>

Trin 4) Nu skal du foretage en Êndring i web.config-filen. Denne Êndring vil give besked om, at når der opstår en fejl i applikationen, skal den brugerdefinerede fejlside vises. Tagget customErrors giver mulighed for at definere en brugerdefineret fejlside. Egenskaben defaultRedirect er indstillet til navnet på vores brugerdefinerede fejlside, der blev oprettet i det forrige trin.

Fejlhåndtering i 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>

Trin 5) Lad os nu tilfÞje noget fejlagtig kode til demo.aspx.cs-siden. Åbn denne side ved at dobbeltklikke pÃ¥ filen i Solution Explorer.

Fejlhåndtering i ASP.NET

TilfÞj nedenstående kode til filen Demo.aspx.cs.

  • Disse kodelinjer er designet til at lÊse tekstlinjerne fra en fil.
  • Filen skal efter sigende vÊre placeret pÃ¥ D-drevet med navnet Example.txt.
  • Men i vores situation eksisterer denne fil ikke rigtig. SÃ¥ denne kode vil resultere i en fejl, nÃ¥r applikationen kÞrer.

Fejlhåndtering i 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);
        }
    }
}

UdfÞr nu koden i Visual Studio og du bÞr få nedenstående output.

Produktion:-

Fejlhåndtering i ASP.NET

Ovenstående side viser, at der opstod en fejl i applikationen. Som fÞlge heraf vises siden ErrorPage.html for brugeren.

ASP.NET Ubehandlet undtagelse

Selv i de bedste scenarier kan der vÊre tilfÊlde af fejl, som simpelthen ikke er forudsete. Forestil dig, at en bruger navigerer til den forkerte side i applikationen. Dette er noget, der ikke kan forudsiges. I sådanne tilfÊlde kan ASP.NET omdirigere brugeren til ErrorPage.html.

Lad os se et eksempel på dette.

  • Vi skal bruge vores samme DemoApplication, som har ErrorPage.html.
  • Og vi vil prÞve at se en webside, som ikke findes i vores applikation.
  • I dette tilfÊlde bÞr vi blive omdirigeret til vores ErrorPage.html-side. Lad os se pÃ¥ trinnene til at opnÃ¥ dette.

Trin 1) Lad os arbejde på vores DemoApplication. Åbn filen Global.asax.cs fra Solution Explorer.

ASP.NET Ubehandlet undtagelse

BemÊrk: Global.asax.cs-filen bruges til at tilfÞje kode, der vil vÊre gÊldende på alle sider i applikationen.

Trin 2) TilfÞj nedenstående kodelinje til Global.asax.cs. Disse linjer vil blive brugt til at kontrollere for fejl og vise ErrorPage.html-siden i overensstemmelse hermed.

ASP.NET Ubehandlet undtagelse

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 Forklaring:-

  1. Den fÞrste linje er Application_Error-hÊndelseshåndtereren. Denne hÊndelse kaldes, når der opstår en fejl i et program. BemÊrk, at hÊndelsesnavnet skal vÊre Application_Error, og parametrene skal vÊre som vist ovenfor.
  2. DernÊst definerer vi et objekt af klassetypen HttpException. Dette er et standardobjekt, som vil indeholde alle detaljerne om fejlen. Vi bruger derefter Server.GetLastError-metoden til at få alle detaljerne om den sidste fejl, der opstod i applikationen.
  3. Vi kontrollerer derefter, om fejlkoden for den sidste fejl er 404 (fejlkoden 404 er standardkoden, der returneres, når en bruger navigerer til en side, der ikke findes). Vi overfÞrer derefter brugeren til siden ErrorPage.html, hvis fejlkoden matcher.

KÞr nu koden i Visual Studio, og du burde få nedenstående output.

Produktion:-

Gennemse siden http://localhost:53003/Demo1.aspx. Husk, at Demo1.aspx ikke findes i vores applikation. Du vil så få nedenstående output.

Ubehandlet undtagelse i ASP.NET

Ovenstående side viser, at der opstod en fejl i applikationen. Som fÞlge heraf vises siden ErrorPage.html for brugeren.

ASP.NET-fejllogning

Ved at logge programfejl hjÊlper det udvikleren med at foretage fejlfinding og lÞse fejlen på et senere tidspunkt. ASP.NET har mulighed for at logge fejl. Dette gÞres i Global.asax.cs-filen, når fejlen registreres. Under registreringsprocessen kan fejlmeddelelsen skrives ind i en logfil.

Lad os se et eksempel på dette.

  • Vi skal bruge vores samme DemoApplication, som har ErrorPage.html.
  • Og vi vil prÞve at se en webside, som ikke findes i vores applikation.
  • Vi bÞr omdirigeres til vores ErrorPage.html side i dette tilfÊlde.
  • Og samtidig skriver vi fejlmeddelelsen til en logfil. Lad os se pÃ¥ trinnene til at opnÃ¥ dette.

Trin 1) Lad os arbejde på vores DemoApplication. Åbn filen Global.asax.cs fra Solution Explorer.

ASP.NET Fejllogning

Trin 2) TilfÞj nedenstående kodelinje til Global.asax.cs. Den vil kontrollere for fejl og vise ErrorPage.html-siden i overensstemmelse hermed. Samtidig logger vi fejloplysningerne i en fil kaldet AllErrors.txt. I vores eksempel skriver vi kode for at oprette denne fil på D-drevet.

ASP.NET Fejllogning

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 Forklaring:-

  1. Den fÞrste linje er til for at hente selve fejlen ved hjÊlp af Server.GetLastError-metoden. Denne tildeles derefter variablen exc.
  2. Vi opretter derefter en tom strengvariabel kaldet str. Vi får den faktiske fejlmeddelelse ved hjÊlp af egenskaben exc.Message. Egenskaben exc.Message vil have den nÞjagtige meddelelse for enhver fejl, der opstår, når applikationen kÞres. Dette tildeles derefter strengvariablen.
  3. DernÊst definerer vi filen kaldet AllErrors.txt. Det er hertil alle fejlmeddelelserne sendes. Vi skriver strengen str, som indeholder alle fejlmeddelelserne, til denne fil.
  4. Til sidst overfÞrer vi brugeren til filen ErrorPage.html.

Produktion:-

Gennemse siden http://localhost:53003/Demo1.aspx. Husk, at Demo1.aspx ikke findes i vores applikation. Du vil så få nedenstående output.

ASP.NET Fejllogning

Og samtidig, hvis du åbner AllErrors.txt-filen, vil du se nedenstående oplysninger.

ASP.NET Fejllogning

Fejlmeddelelsen kan derefter videregives til udvikleren på et senere tidspunkt til fejlfindingsformål.

Ofte Stillede SpÞrgsmål

Ja. AI-vÊrktÞjer som GitHub Copilot kan foreslå breakpoints, forklare en undtagelse og foreslå rettelser til ASP.NET-kode. RevSe hvert forslag og reproducer fejlen selv, da AI kan fejllÊse den applikationsspecifikke tilstand.

Ja. MaskinlÊringsfunktioner i vÊrktÞjer som f.eks. Azure Application Insights kan automatisk markere usÊdvanlige stigninger i undtagelser eller langsomme anmodninger. Dette hjÊlper teams med at finde produktionsproblemer hurtigere end ved manuelt at scanne rå logfiler.

Nej. Hvis customErrors-tilstanden er slået fra, eksponeres stakken tracog fÞlsomme oplysninger til alle besÞgende, hvilket er en sikkerhedsrisiko. Brug tilstanden Kun fjernbetjening eller Til i produktion, så kun lokale udviklere ser alle fejloplysninger.

RemoteOnly viser kun detaljerede fejlsider til browsere på den lokale server, mens eksterne brugere sendes til standardomdirigeringssiden. Det er en sikker mellemvej til at fejlfinde et aktivt websted uden at lÊkke information.

SÊt debug="false" i kompileringselementet i web.config. Fejlfindingstilstand deaktiverer optimeringer, holder timeouts lange og Þger hukommelsesforbruget, så produktionssteder bÞr altid levere med den slået fra i Visual Studio.

Nej. En Ã¥ben trace.axd kan afslÞre headere, sessions- og servervariabler for angribere. SÊt localOnly=”true” eller deaktiver trachelt inden udrulning, sÃ¥ trace-data eksponeres aldrig for eksterne brugere.

Server.Transfer videresender anmodningen til fejlsiden på serveren uden at Êndre browseren. URL eller foretager en rundtur. Response.Redirect sender en ny anmodning til browseren og opdaterer URL til fejlsiden.

Registrer undtagelsesmeddelelsen, stack trace, anmodet URL, tidsstempel og brugerkontekst. Disse detaljer giver udviklere mulighed for at reproducere fejlen senere. Server.GetLastError i Application_Error eksponerer undtagelsen, så du kan skrive den til en fil eller database.

Opsummer dette indlÊg med: