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.
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.
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.
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.
- 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.
- 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.
Produktion:-
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.
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.
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.
<?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:-
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:
- Tidspunktet for anmodningen om websiden.
- Navnet på den webside, der anmodes om.
- Statuskoden for webanmodningen (en statuskode på 200 betyder, at anmodningen er gennemfÞrt).
- 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.
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.
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.
<%@ 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:-
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.
- HÞjreklik på DemoApplication i Solution Explorer.
- VÊlg menupunktet TilfÞj->HTML-side.
Trin 2) I det nÊste trin skal vi give et navn til den nye HTML-side.
- Angiv navnet som ErrorPage.
- Klik på knappen OK for at fortsÊtte.
Trin 3) ErrorPage åbnes automatisk i Visual Studio. Hvis du går til Solution Explorer, vil du se filen tilfÞjet.
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.
<!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.
<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.
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.
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:-
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.
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.
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:-
- 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.
- 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.
- 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.
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.
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.
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:-
- Den fÞrste linje er til for at hente selve fejlen ved hjÊlp af Server.GetLastError-metoden. Denne tildeles derefter variablen exc.
- 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.
- 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.
- 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.
Og samtidig, hvis du åbner AllErrors.txt-filen, vil du se nedenstående oplysninger.
Fejlmeddelelsen kan derefter videregives til udvikleren på et senere tidspunkt til fejlfindingsformål.





























