Asp.Net Sidenivåsporing, feilsøking, feilhåndtering [Eksempel]
I enhver applikasjon vil det garantert oppstå feil under utviklingsprosessen. Det er viktig å kunne oppdage feil på et tidlig tidspunkt.
I Visual Studio er det mulig å gjøre dette for ASP.Net-applikasjoner. Visual Studio brukes til feilsøking og har feilhåndteringsteknikker for ASP.Net.
Hva er feilsøking i ASP.NET?
Feilsøking er prosessen med å legge til bruddpunkter i en applikasjon. Disse bruddpunktene brukes til å pause utførelsen av et kjørende program. Dette lar utvikleren forstå hva som skjer i et program på et bestemt tidspunkt.
La oss ta et eksempel på et program. Programmet viser en streng "Vi feilsøker" til brukeren. Anta at når vi kjører applikasjonen, av en eller annen grunn, vises ikke strengen. For å identifisere problemet må vi legge til et bruddpunkt. Vi kan legge til et bruddpunkt til kodelinjen som viser strengen. Dette bruddpunktet vil sette kjøringen av programmet på pause. På dette tidspunktet kan programmereren se hva som muligens går galt. Programmereren retter opp programmet deretter.
Her i eksemplet vil vi bruke vår 'DemoApplication' som ble opprettet i tidligere kapitler. I følgende eksempel vil vi se
- Hvordan få demoapplikasjonen til å vise en streng.
- Hvordan legge til bruddpunkter i en applikasjon.
- Hvordan feilsøke applikasjonen ved å bruke dette bruddpunktet.
Slik feilsøker du et program i ASP.NET
Nedenfor er trinnene for å lage en demoapplikasjon, legge til bruddpunkter og feilsøke i ASP.Net:
Trinn 1) Åpne applikasjonen i Visual Studio
La oss først sørge for at vi har nettapplikasjonen vår åpen i Visual Studio. Sørg for at DemoApplication er åpen i Visual Studio.
Trinn 2) Åpne nå Demo.aspx.cs-filen og legg til kodelinjen nedenfor.
- Vi legger bare til kodelinjen Response.Write for å vise en streng.
- Så når applikasjonen kjøres, skal den vise strengen "Vi feilsøker" i nettleseren.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("We are debugging"); } } }
Trinn 3) Legg til et bruddpunkt i applikasjonen
Et bruddpunkt er et punkt i Visual Studio hvor du vil at programmet skal stoppe.
- For å legge til et bruddpunkt, må du klikke på kolonnen der du vil at bruddpunktet skal settes inn. Så i vårt tilfelle vil vi at programmet vårt skal stoppe ved kodelinjen "Response.Write". Du trenger ikke legge til noen kommando for å legge til et bruddpunkt. Du trenger bare å klikke på linjen du vil legge til et bruddpunkt på.
- Når dette er gjort, vil du legge merke til at koden blir merket med rødt. Dessuten kommer en rød boble opp i kolonnen ved siden av kodelinjen.
Merk: - Du kan legge til flere bruddpunkter i en applikasjon
Trinn 4) Kjør programmet i feilsøkingsmodus
Nå må du kjøre applikasjonen din ved å bruke feilsøkingsmodus. I Visual Studio velger du menyvalget Feilsøking->Start feilsøking.
Produksjon:-
Når du utfører alle trinnene riktig, vil kjøringen av programmet bryte. Visual Studio vil gå til bruddpunktet og merke kodelinjen i gult.
Nå, hvis programmereren føler at koden er feil, kan kjøringen stoppes. Koden kan deretter endres tilsvarende. For å fortsette å fortsette programmet, må programmereren klikke på F5-knappen på tastaturet.
Hva er sporing i ASP.NET?
Applikasjonssporing lar en se om noen av de etterspurte sidene resulterer i en feil. Når sporing er aktivert, legges en ekstra side kalt trace.axd til i applikasjonen. (Se bildet nedenfor). Denne siden er vedlagt søknaden. Denne siden vil vise alle forespørslene og deres status.
Slik aktiverer du sporing for en applikasjon i ASP.NET
La oss se på hvordan du aktiverer sporing for en ASP.Net-applikasjon:
Trinn 1) La oss jobbe med vår 'DemoApplication'. Åpne web.config-filen fra Solution Explorer.
Trinn 2) Legg til kodelinjen nedenfor i Web.config-filen.
Trace-setningen brukes til å aktivere sporing for applikasjonen.
- 'RequestLimit' i sporsetningen brukes. Den spesifiserer antall sideforespørsler som må spores.
- I vårt eksempel gir vi en grense på 40. Vi gir grense fordi en høyere verdi vil forringe ytelsen til applikasjonen.
<?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 enable="true" pageOutput="false" requestLimit="40" localOnly="false"/> </system.web> </configuration>
Kjør "demoapplikasjonen" i Visual Studio.
Produksjon:-
Hvis du nå blar til URL-en – http://localhost:53003/trace.axd , vil du se informasjonen for hver forespørsel. Her kan du se om det oppstår feil i en applikasjon. Følgende typer informasjon vises på siden ovenfor
- Tidspunktet for forespørselen om nettsiden.
- Navnet på nettsiden som forespørres.
- Statuskoden til nettforespørselen. (statuskode på 200 betyr at forespørselen er vellykket).
- Vis detaljer som du tillater for å se flere detaljer om nettforespørselen. Et eksempel på dette er vist nedenfor. En viktig detaljert informasjon som er gitt er overskriftsinformasjonen. Denne informasjonen viser hva som er informasjonen som sendes i overskriften på hver nettforespørsel.
Sidenivåsporing i ASP.NET
Sidenivåsporing i ASP.Net viser all generell informasjon om en nettside når den behandles. Dette er nyttig ved feilsøking hvis en side av en eller annen grunn ikke fungerer. Visual Studio gir detaljert informasjon om ulike aspekter av siden og informasjon som for eksempel tidspunktet for hver metode som kalles i nettforespørselen.
Hvis for eksempel nettapplikasjonen din har et ytelsesproblem, kan denne informasjonen hjelpe deg med å feilsøke problemet. Denne informasjonen vises når applikasjonen kjøres i Visual Studio.
Slik aktiverer du sporing på sidenivå i ASP.NET
La oss se på hvordan du aktiverer sidenivåsporing for en ASP.Net-applikasjon:
Trinn 1) La oss jobbe med vår demoapplikasjon. Åpne filen demo.aspx fra Solution Explorer
Trinn 2) Legg til kodelinjen nedenfor for å aktivere sidesporing. I sideerklæringen legger du bare til linjen Trace=”true”. Denne kodelinjen vil tillate sporing på sidenivå.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %> <!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server”> </form> </body> </html>
Kjør programmet i Visual Studio.
Produksjon:-
Nå når nettsiden Demo.aspx vises, vil du få mye informasjon om siden. Informasjon som tiden for hvert aspekt av sidens livssyklus vises på denne siden.
Feilhåndtering: Viser en egendefinert feilside
In ASP.Net, kan du få tilpassede feilsider vist til brukerne. Hvis en applikasjon inneholder noen form for feil, vil en tilpasset side vise denne feilen til brukeren.
I vårt eksempel skal vi først legge til en HTML-side. Denne siden vil vise en streng til brukeren "Vi ser på problemet". Vi vil da legge til litt feilkode på vår demo.aspx-side slik at feilsiden vises.
La oss følge trinnene nedenfor
Trinn 1) La oss jobbe med vår demoapplikasjon. La oss legge til en HTML-side i applikasjonen
- Høyreklikk på DemoApplication i Solution Explorer
- Velg menyvalget 'Legg til'->HTML-side
Trinn 2) I neste trinn må vi gi et navn til den nye HTML-siden.
- Oppgi navnet som "ErrorPage".
- Klikk på 'OK'-knappen for å fortsette.
Trinn 3) Feilsiden åpnes automatisk i Visual Studio. Hvis du går til Solution Explorer, vil du se filen lagt til.
Legg til kodelinjen "Vi ser på problemet" på HTML-siden. Du trenger ikke å lukke HTML-filen før du gjør endringen til web.config-filen.
<!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> We are looking into the problem </body> </html>
Trinn 4) Nå må du gjøre en endring i web.config-filen. Denne endringen vil varsle at hver gang det oppstår en feil i applikasjonen, må den tilpassede feilsiden vises.
'customErrors'-taggen lar deg definere en egendefinert feilside. StandardRedirect-egenskapen er satt til navnet på vår egendefinerte feilside opprettet i forrige trinn.
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <customErrors mode="On" defaultRedirect="ErrorPage.html"> </customErrors> </system.web> </configuration>
Trinn 5) La oss nå legge til feil kode på demo.aspx.cs-siden. Åpne denne siden ved å dobbeltklikke på filen i Solution Explorer
Legg til koden nedenfor i Demo.aspx.cs-filen.
- Disse kodelinjene er laget for å lese linjene i en tekst fra en fil.
- Filen er ment å være plassert i D-stasjonen med navnet 'Example.txt'.
- Men i vår situasjon eksisterer ikke denne filen egentlig. Så denne koden vil resultere i en feil når applikasjonen kjø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); } } }
Kjør nå koden i Visual Studio og du bør få utgangen nedenfor.
Produksjon:-
Siden ovenfor viser at det ble utløst en feil i applikasjonen. Som et resultat vises Error.html-siden for brukeren.
ASP.NET Ubehandlet unntak
Selv i de beste scenarier kan det være tilfeller av feil som bare ikke er forutsett.
Anta at hvis en bruker blar til feil side i applikasjonen. Dette er noe som ikke kan forutses. I slike tilfeller kan ASP.Net omdirigere brukeren til errorpage.html.
La oss se et eksempel på dette.
- Vi kommer til å bruke vår samme 'DemoApplication' som har Errorpage.html.
- Og vi vil prøve å se en nettside som ikke finnes i applikasjonen vår.
- Vi bør omdirigeres til vår ErrorPage.html-side i dette tilfellet. La oss se fremgangsmåten for å oppnå dette.
Trinn 1) La oss jobbe med vår demoapplikasjon. Åpne Global.asax.cs-filen fra Solution Explorer
MERKNADER: Global.asax.cs-filen brukes til å legge til kode som vil være gjeldende på alle sidene i applikasjonen.
Trinn 2) Legg til kodelinjen nedenfor til global.asax.cs. Disse linjene vil bli brukt til å se etter feil og vise ErrorPage.html-siden deretter.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { ? HttpException lastErrorWrapper = Server.GetLastError() as HttpException; if(lastErrorWrapper.GetHttpCode() == 404) Server.T ransfer("~/ErrorPage.html"); } } }
Kodeforklaring:-
- Den første linjen er hendelsesbehandleren Application_Error. Denne hendelsen kalles når det oppstår en feil i en applikasjon. Merk at hendelsesnavnet må være 'Application_Error'. Og parametrene skal være som vist ovenfor.
- Deretter definerer vi et objekt av klassetypen HttpException. Dette er et standardobjekt som vil inneholde alle detaljene om feilen. Vi bruker deretter Server.GetLastError-metoden for å få alle detaljene om den siste feilen som oppsto i applikasjonen.
- Vi sjekker så om feilkoden for den siste feilen er 404. (Feilkoden 404 er standardkoden som returneres når en bruker blar til en side som ikke blir funnet). Vi overfører deretter brukeren til ErrorPage.html-siden hvis feilkoden stemmer.
Kjør nå koden i Visual Studio, og du bør få utdataene nedenfor
Produksjon:-
Bla gjennom siden http://localhost:53003/Demo1.aspx . Husk at Demo1.aspx ikke eksisterer i vår applikasjon. Du vil da få utgangen nedenfor.
Siden ovenfor viser at det ble utløst en feil i applikasjonen. Som et resultat vises Error.html-siden for brukeren.
ASP.NET Feillogging
Ved å logge applikasjonsfeil hjelper det utvikleren med å feilsøke og løse feilen på et senere tidspunkt. ASP.Net har mulighet til å logge feil. Dette gjøres i Global.asax.cs-filen når feilen fanges opp. Under fangstprosessen kan feilmeldingen skrives inn i en loggfil.
La oss se et eksempel på dette.
- Vi kommer til å bruke vår samme DemoApplication som har Errorpage.html.
- Og vi vil prøve å se en nettside som ikke finnes i applikasjonen vår.
- Vi bør omdirigeres til vår ErrorPage.html-side i dette tilfellet.
- Og samtidig vil vi skrive feilmeldingen til en loggfil. La oss se fremgangsmåten for å oppnå dette.
Trinn 1) La oss jobbe med vår demoapplikasjon. Åpne Global.asax.cs-filen fra Solution Explorer
Trinn 2) Legg til kodelinjen nedenfor i global.asax.cs. Den vil se etter feil og vise ErrorPage.html-siden tilsvarende. Samtidig vil vi logge feildetaljene i en fil kalt 'AllErrors.txt.' For vårt eksempel vil vi skrive kode for å få denne filen opprettet på D-stasjonen.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); String str =""; str = exc.Message; String path = @"D:\AllErrors.txt"; File.WriteAllTest(path,str); Server.trrasfer("~/ErrorPage.html"); } } }
Kodeforklaring:-
- Den første linjen er å få selve feilen ved å bruke 'Server.GetLastError'-metoden. Denne tilordnes deretter variabelen 'exc'.
- Vi lager deretter en tom strengvariabel kalt 'str'. Vi får den faktiske feilmeldingen ved å bruke egenskapen 'exc.Message'. Egenskapen exc.Message vil ha den nøyaktige meldingen for eventuelle feil som oppstår når applikasjonen kjøres. Denne tilordnes deretter strengvariabelen.
- Deretter definerer vi filen som heter 'AllErrrors.txt.' Det er her alle feilmeldingene vil bli sendt. Vi skriver strengen 'str' som inneholder alle feilmeldingene til denne filen.
- Til slutt overfører vi brukeren til filen ErrorPage.html.
Produksjon:-
Bla gjennom siden http://localhost:53003/Demo1.aspx . Husk at Demo1.aspx ikke eksisterer i vår applikasjon. Du vil da få utgangen nedenfor.
Og samtidig, hvis du åpner 'AllErrors.txt'-filen, vil du se informasjonen nedenfor.
Feilmeldingen kan deretter sendes videre til utvikleren på et senere tidspunkt for feilsøkingsformål.
Sammendrag
- ASP.Net har anlegget til å utføre feilsøking og feilhåndtering.
- Feilsøking kan oppnås ved å legge til bruddpunkter i koden. Man kjører deretter alternativet Start med feilsøking i Visual Studio for å feilsøke koden.
- Sporing er anlegget for å gi mer informasjon mens du kjører applikasjonen. Dette kan gjøres på applikasjons- eller sidenivå.
- På sidenivå må koden Trace=true legges til sidedirektivet.
- På applikasjonsnivå opprettes en ekstra side kalt Trace.axd for applikasjonen. Dette gir all nødvendig sporingsinformasjon.