Asp.Net-sivutaso Tracvirheenkorjaus, virheenkäsittely

⚡ Älykäs yhteenveto

ASP.NET-virheenkorjaus, tracja virheiden käsittely Visual Studiossa auttavat kehittäjiä havaitsemaan ongelmat varhaisessa vaiheessa, seuraamaan pyyntöjä läpi trace.axd ja ohjaavat käyttäjät mukautetuille virhesivuille, kun kehitys- ja tuotantosyklin aikana ilmenee käsittelemättömiä poikkeuksia.

  • 🐞 virheenkorjaus: Visual Studion keskeytyskohdat keskeyttävät suorituksen, jotta voit tarkastella käynnissä olevaa ASP.NET-sivua rivi riviltä.
  • 🔎 TracING: Mahdollistaa trace web.config-tiedostossa lisää trace.axd, joka listaa jokaisen pyynnön, sen tilakoodin ja ajoituksen.
  • 📄 Sivu TracING: Lisääminen TracSivudirektiivin e=”true” näyttää yksittäisen sivun elinkaaren ajoituksen.
  • 🚧 Mukautetut virheet: customErrors-tagi ohjaa käyttäjät käyttäjäystävälliselle virhesivulle, kun sovellus epäonnistuu.
  • 🧭 Käsittelemättömät poikkeukset: Global.asax-tiedoston Application_Error-virhe havaitsee odottamattomat virheet ja ohjaa turvalliselle sivulle.
  • 🗃️ Virheiden kirjaaminen: Server.GetLastError-tietojen kirjoittaminen tiedostoon tallentaa ongelmia myöhempää virheenkorjausta varten.

ASP.NET-sivutaso Tracvirheenkorjaus ja virheiden käsittely

Kaikissa sovelluksissa virheitä tapahtuu väistämättä kehitysprosessin aikana. On tärkeää pystyä havaitsemaan virheet varhaisessa vaiheessa.

Visual Studiossa tämä on mahdollista ASP.NET-sovelluksille. Visual Studiota käytetään virheenkorjaukseen ja siinä on virheenkäsittelytekniikoita ASP.NETille.

Mitä on virheenkorjaus ASP.NET:ssä?

Virheenkorjaus on prosessi, jossa sovellukseen lisätään keskeytyspisteitä. Näitä keskeytyspisteitä käytetään käynnissä olevan ohjelman suorituksen keskeyttämiseen. Tämä antaa kehittäjälle mahdollisuuden ymmärtää, mitä ohjelmassa tapahtuu tiettynä ajankohtana.

Otetaan esimerkki ohjelmasta. Ohjelma näyttää käyttäjälle merkkijonon ”Virheenkorjaus on käynnissä”. Oletetaan, että sovellusta suoritettaessa merkkijonoa ei jostain syystä näytetä. Ongelman tunnistamiseksi meidän on lisättävä keskeytyskohta. Voimme lisätä keskeytyskohdan koodiriville, joka näyttää merkkijonon. Tämä keskeytyskohta pysäyttää ohjelman suorituksen. Tässä vaiheessa ohjelmoija voi nähdä, mikä mahdollisesti menee pieleen. Ohjelmoija korjaa ohjelman vastaavasti.

Tässä esimerkissä käytämme aiemmissa luvuissa luotua demosovellustamme. Seuraavassa esimerkissä näemme:

  • Kuinka saada demosovellus näyttämään merkkijono.
  • Kuinka lisätä keskeytyskohtia sovellukseen.
  • Sovelluksen virheenkorjaus tämän keskeytyskohdan avulla.

Sovelluksen virheenkorjaus ASP.NETissä

Alla on vaiheet demosovelluksen tekemiseen, keskeytyspisteiden lisäämiseen ja debuggaamiseen ASP.NETissä:

Vaihe 1) Avaa sovellus Visual Studiossa.
Varmistakaamme ensin, että verkkosovelluksemme on auki Visual Studiossa. Varmista, että DemoApplication on auki Visual Studiossa.

Virheenkorjaus ASP.NET-sovelluksessa

Vaihe 2) Avaa nyt Demo.aspx.cs-tiedosto ja lisää alla oleva koodirivi.

  • Lisäämme vain koodirivin Response.Write näyttääksesi merkkijonon.
  • Joten kun sovellus suoritetaan, sen pitäisi näyttää verkkoselaimessa merkkijono "Meillä on virheenkorjaus".

Virheenkorjaus ASP.NET-sovelluksessa

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

Vaihe 3) Lisää sovellukseen keskeytyskohta.
Keskeytyskohta on Visual Studion piste, johon haluat ohjelman suorittamisen pysähtyvän.

Virheenkorjaus ASP.NET-sovelluksessa

  1. Lisätäksesi keskeytyskohdan sinun on napsautettava saraketta, johon haluat lisätä keskeytyskohdan. Tässä tapauksessa haluamme ohjelmamme pysähtyvän koodiriville ”Response.Write”. Sinun ei tarvitse lisätä mitään komentoa keskeytyskohdan lisäämiseksi. Sinun tarvitsee vain napsauttaa riviä, jolle haluat lisätä keskeytyskohdan.
  2. Kun tämä on tehty, huomaat, että koodi merkitään punaisella. Lisäksi koodirivin viereiseen sarakkeeseen tulee punainen kupla.

Huomautus: Voit lisätä sovellukseen useita keskeytyspisteitä.

Vaihe 4) Suorita sovellus virheenkorjaustilassa.
Nyt sinun on suoritettava sovelluksesi virheenkorjaustilassa. Valitse Visual Studiossa valikkovaihtoehto Debug-> Start Debugging.

Virheenkorjaus ASP.NET-sovelluksessa

Lähtö: -

Virheenkorjaus ASP.NET-sovelluksessa

Kun teet kaikki vaiheet oikein, ohjelman suoritus keskeytyy. Visual Studio siirtyy keskeytyskohtaan ja merkitsee koodirivin keltaisella.

Nyt, jos ohjelmoija katsoo, että koodi on väärä, suoritus voidaan keskeyttää. Koodia voidaan sitten muokata vastaavasti. Jatkaaksesi ohjelman suorittamista, ohjelmoijan on napsautettava näppäimistön F5-painiketta.

Mikä on TracASP.NETissä?

Hakemus tracta mahdollistaa sen, että nähdään, aiheuttavatko pyydetyt sivut virheen. Kun tracon käytössä, ylimääräinen sivu nimeltä trace.axd lisätään sovellukseen (katso kuva alla). Tämä sivu on liitetty sovellukseen ja näyttää kaikki pyynnöt ja niiden tilan.

TracASP.NET-kielellä

Kuinka sallia Tracsovelluksen luominen ASP.NETissä

Katsotaanpa, miten se otetaan käyttöön tracetsimässä ASP.NET-sovellus:

Vaihe 1) Työstetään demosovellustamme. Avaa web.config-tiedosto ratkaisuselaimessa.

Enable tracsovelluksen suunnittelu ASP.NETissä

Vaihe 2) Lisää alla oleva koodirivi web.config-tiedostoon. trace-lausetta käytetään ottamaan käyttöön trachakemusta varten.

  • RequestLimit-arvo trace-lauseke määrittää sivupyyntöjen määrän, jotka on käsiteltävä tracpainos
  • Esimerkissämme annamme rajan 40. Annamme rajan, koska korkeampi arvo heikentää sovelluksen suorituskykyä.

Enable tracsovelluksen suunnittelu ASP.NETissä

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

Suorita DemoApplication Visual Studiossa.

Lähtö: -

Enable tracsovelluksen suunnittelu ASP.NETissä

Jos nyt selailet kohtaan URL http://localhost:53003/trace.axd, näet kunkin pyynnön tiedot. Täältä näet, esiintyykö sovelluksessa virheitä. Sivulla näytetään seuraavanlaisia ​​tietoja:

  1. Web-sivun pyynnön aika.
  2. Pyydetyn verkkosivun nimi.
  3. Verkkopyynnön tilakoodi (tilakoodi 200 tarkoittaa, että pyyntö onnistui).
  4. Näytä tiedot -linkki, jonka avulla voit tarkastella lisätietoja verkkopyynnöstä. Yksi tärkeä tieto on otsikkotiedot, jotka näyttävät, mitä tietoja kunkin verkkopyynnön otsikossa lähetetään.

Enable tracsovelluksen suunnittelu ASP.NETissä

Sivun taso TracASP.NET-kielellä

Sivun taso Tracta ASP.NETissä näyttää kaikki yleiset tiedot verkkosivusta sen käsittelyn aikana. Tästä on hyötyä virheenkorjauksessa, jos sivu ei jostain syystä toimi. Visual Studio tarjoaa yksityiskohtaisia ​​tietoja sivun eri osa-alueista, kuten kunkin verkkopyynnössä kutsutun metodin ajan.

Jos esimerkiksi verkkosovelluksessasi on suorituskykyongelma, nämä tiedot voivat auttaa ongelman vianmäärityksessä. Nämä tiedot näytetään, kun sovellus suoritetaan Visual Studiossa.

Kuinka sallia Tracsivutasolla ASP.NETissä

Katsotaanpa, miten sivutaso otetaan käyttöön tracASP.NET-sovelluksen käyttö:

Vaihe 1) Työstetään demosovellustamme. Avaa demo.aspx-tiedosto ratkaisuselaimessa.

Sivun taso TracASP.NET-kielellä

Vaihe 2) Lisää alla oleva koodirivi sivun aktivoimiseksi tracing. Sivun määrittelyssä lisää vain attribuutti Trace=”true”. Tämä koodirivi sallii sivutason tracden.

Sivun taso TracASP.NET-kielellä

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

Suorita sovellus Visual Studiossa.

Lähtö: -

Sivun taso TracASP.NET-kielellä

Nyt kun Web-sivu Demo.aspx tulee näkyviin, saat paljon tietoa sivusta. Tällä sivulla näytetään tiedot, kuten aika kullekin sivun elinkaaren osalle.

Virheiden käsittely: Mukautetun virhesivun näyttäminen

In ASP.NET, voit näyttää käyttäjille mukautettuja virhesivuja. Jos sovellus sisältää minkä tahansa virheen, mukautettu sivu näyttää tämän virheen käyttäjälle.

Esimerkissämme lisäämme ensin HTML-sivun. Tämä sivu näyttää käyttäjälle merkkijonon "Selvitämme ongelmaa". Sitten lisäämme virhekoodia demo.aspx-sivullemme, jotta virhesivu näytetään. Noudatetaan alla mainittuja vaiheita.

Vaihe 1) Työstetään demosovellustamme. Lisätään sovellukseen HTML-sivu.

  1. Napsauta DemoApplication-sovellusta hiiren kakkospainikkeella Ratkaisujen hallinnassa.
  2. Valitse valikkovaihtoehto Lisää -> HTML-sivu.

Virheiden käsittely ASP.NETissä

Vaihe 2) Seuraavassa vaiheessa meidän on annettava nimi uudelle HTML-sivulle.

  1. Anna nimeksi ErrorPage.
  2. Napsauta OK-painiketta jatkaaksesi.

Virheiden käsittely ASP.NETissä

Vaihe 3) Virhesivu avautuu automaattisesti Visual Studiossa. Jos siirryt ratkaisuhallintaan, näet tiedoston lisättynä.

Virheiden käsittely ASP.NETissä

Lisää HTML-sivulle koodirivi ”Selvitämme ongelmaa”. HTML-tiedostoa ei tarvitse sulkea ennen web.config-tiedoston muuttamista.

Virheiden käsittely ASP.NETissä

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

Vaihe 4) Nyt sinun on tehtävä muutos web.config-tiedostoon. Tämä muutos ilmoittaa, että aina kun sovelluksessa tapahtuu virhe, mukautettu virhesivu on näytettävä. customErrors-tagin avulla voit määrittää mukautetun virhesivun. defaultRedirect-ominaisuudeksi asetetaan edellisessä vaiheessa luomamme mukautetun virhesivun nimi.

Virheiden käsittely ASP.NETissä

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

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

    </system.web>
</configuration>

Vaihe 5) Lisätään nyt virheellistä koodia demo.aspx.cs-sivulle. Avaa tämä sivu kaksoisnapsauttamalla tiedostoa Ratkaisuhallinnassa.

Virheiden käsittely ASP.NETissä

Lisää alla oleva koodi Demo.aspx.cs-tiedostoon.

  • Nämä koodirivit on suunniteltu lukemaan tekstirivejä tiedostosta.
  • Tiedoston on tarkoitus sijaita D-asemalla nimellä Example.txt.
  • Mutta meidän tilanteessamme tätä tiedostoa ei todellakaan ole olemassa. Joten tämä koodi aiheuttaa virheen, kun sovellus suoritetaan.

Virheiden käsittely ASP.NETissä

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

Suorita nyt koodi sisään Visual Studio ja sinun pitäisi saada alla oleva tulos.

Lähtö: -

Virheiden käsittely ASP.NETissä

Yllä oleva sivu osoittaa, että sovelluksessa on tapahtunut virhe. Tämän seurauksena käyttäjälle näytetään ErrorPage.html-sivu.

ASP.NET käsittelemätön poikkeus

Parhaassakin tapauksessa voi tapahtua virheitä, joita ei voida ennakoida. Oletetaan, että käyttäjä selaa väärälle sivulle sovelluksessa. Tätä ei voida ennustaa. Tällaisissa tapauksissa ASP.NET voi ohjata käyttäjän ErrorPage.html-tiedostoon.

Katsotaanpa esimerkkiä tästä.

  • Aiomme käyttää samaa DemoApplication-sovellustamme, jolla on ErrorPage.html-tiedosto.
  • Ja yritämme tarkastella verkkosivua, jota ei ole sovelluksessamme.
  • Meidät pitäisi tässä tapauksessa ohjata ErrorPage.html-sivullemme. Katsotaanpa vaiheet tämän saavuttamiseksi.

Vaihe 1) Työstetään demosovellustamme. Avaa Global.asax.cs-tiedosto ratkaisuselaimessa.

ASP.NET käsittelemätön poikkeus

Huomautus: Global.asax.cs-tiedostoa käytetään koodin lisäämiseen, jota sovelletaan kaikilla sovelluksen sivuilla.

Vaihe 2) Lisää alla oleva koodirivi Global.asax.cs-tiedostoon. Näitä rivejä käytetään virheiden tarkistamiseen ja ErrorPage.html-sivun näyttämiseen niiden mukaisesti.

ASP.NET käsittelemätön poikkeus

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

  1. Ensimmäinen rivi on Application_Error-tapahtumankäsittelijä. Tätä tapahtumaa kutsutaan aina, kun sovelluksessa tapahtuu virhe. Huomaa, että tapahtuman nimen on oltava Application_Error ja parametrien tulee olla yllä olevan kaltaiset.
  2. Seuraavaksi määritämme objektin luokkatyyppiä HttpException. Tämä on vakioobjekti, joka sisältää kaikki virheen yksityiskohdat. Käytämme sitten Server.GetLastError-menetelmää saadaksemme kaikki tiedot viimeisestä sovelluksessa tapahtuneesta virheestä.
  3. Sitten tarkistamme, onko viimeisen virheen virhekoodi 404 (virhekoodi 404 on vakiokoodi, joka palautetaan, kun käyttäjä selaa sivulle, jota ei löydy). Jos virhekoodi on sama, siirrämme käyttäjän ErrorPage.html-sivulle.

Suorita nyt koodi Visual Studiossa ja sinun pitäisi saada alla oleva tuloste.

Lähtö: -

Selaa sivua http://localhost:53003/Demo1.aspx. Muista, että Demo1.aspx-tiedostoa ei ole sovelluksessamme. Sitten saat alla olevan tulosteen.

Käsittelemätön poikkeus ASP.NETissä

Yllä oleva sivu osoittaa, että sovelluksessa on tapahtunut virhe. Tämän seurauksena käyttäjälle näytetään ErrorPage.html-sivu.

ASP.NET-virheiden kirjaaminen

Sovellusvirheiden kirjaaminen auttaa kehittäjää vianmäärityksessä ja virheen ratkaisemisessa myöhemmin. ASP.NET:ssä on ominaisuus virheiden kirjaamiseen. Tämä tehdään Global.asax.cs-tiedostoon, kun virhe tallennetaan. Tallennusprosessin aikana virheilmoitus voidaan kirjoittaa lokitiedostoon.

Katsotaanpa esimerkkiä tästä.

  • Aiomme käyttää samaa DemoApplication-sovellustamme, jolla on ErrorPage.html-tiedosto.
  • Ja yritämme tarkastella verkkosivua, jota ei ole sovelluksessamme.
  • Tässä tapauksessa meidät pitäisi ohjata ErrorPage.html-sivullemme.
  • Ja samaan aikaan kirjoitamme virheilmoituksen lokitiedostoon. Katsotaanpa vaiheet tämän saavuttamiseksi.

Vaihe 1) Työstetään demosovellustamme. Avaa Global.asax.cs-tiedosto ratkaisuselaimessa.

ASP.NET Virheiden kirjaaminen

Vaihe 2) Lisää alla oleva koodirivi Global.asax.cs-tiedostoon. Se tarkistaa virheet ja näyttää ErrorPage.html-sivun sen mukaisesti. Samanaikaisesti kirjaamme myös virhetiedot tiedostoon nimeltä AllErrors.txt. Esimerkissämme kirjoitamme koodia, joka luo tämän tiedoston D-asemalle.

ASP.NET Virheiden kirjaaminen

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

  1. Ensimmäisellä rivillä haetaan itse virhe käyttämällä Server.GetLastError-metodia. Tämä sitten sijoitetaan muuttujaan exc.
  2. Sitten luomme tyhjän merkkijonomuuttujan nimeltä str. Saamme varsinaisen virheilmoituksen käyttämällä exc.Message-ominaisuutta. exc.Message-ominaisuudella on tarkka viesti mistä tahansa virheestä, joka ilmenee sovelluksen suorittamisen aikana. Tämä sitten sijoitetaan merkkijonomuuttujaan.
  3. Seuraavaksi määrittelemme tiedoston nimeltä AllErrors.txt. Tähän tiedostoon lähetetään kaikki virheilmoitukset. Kirjoitamme tähän tiedostoon merkkijonon str, joka sisältää kaikki virheilmoitukset.
  4. Lopuksi siirrämme käyttäjän ErrorPage.html-tiedostoon.

Lähtö: -

Selaa sivua http://localhost:53003/Demo1.aspx. Muista, että Demo1.aspx-tiedostoa ei ole sovelluksessamme. Sitten saat alla olevan tulosteen.

ASP.NET Virheiden kirjaaminen

Ja samaan aikaan, jos avaat AllErrors.txt-tiedoston, näet alla olevat tiedot.

ASP.NET Virheiden kirjaaminen

Virheilmoitus voidaan sitten välittää kehittäjälle myöhemmin virheenkorjausta varten.

UKK

Kyllä. Tekoälytyökalut, kuten GitHub Copilot, voivat ehdottaa keskeytyskohtia, selittää poikkeuksia ja ehdottaa korjauksia ASP.NET-koodiin. RevTarkastele jokaista ehdotusta ja toista virhe itse, koska tekoäly voi lukea sovelluskohtaisen tilan väärin.

Kyllä. Koneoppimisominaisuuksia on työkaluissa, kuten Azure Application Insights voi automaattisesti merkitä epätavallisia piikkejä poikkeuksissa tai hitaissa pyynnöissä. Tämä auttaa tiimejä löytämään tuotanto-ongelmia nopeammin kuin raakalokitiedostojen manuaalinen skannaus.

Ei. customErrors-tilan pois päältä jättäminen paljastaa pinon tracja arkaluonteisia tietoja jokaiselle vierailijalle, mikä on tietoturvariski. Käytä tuotannossa tilaa RemoteOnly tai On, jotta vain paikalliset kehittäjät näkevät täydelliset virhetiedot.

RemoteOnly näyttää yksityiskohtaiset virhesivut vain paikallisen palvelimen selaimille, kun taas etäkäyttäjät ohjataan defaultRedirect-sivulle. Se on turvallinen keskitie live-sivuston virheenkorjaukseen ilman tietojen vuotamista.

Aseta web.config-tiedoston käännöselementtiin arvoksi debug=”false”. Virheenkorjaustila poistaa optimoinnit käytöstä, pitää aikakatkaisut pitkinä ja lisää muistin käyttöä, joten tuotantoympäristöissä se tulisi aina toimittaa pois päältä. Visual Studio.

Ei. Avoin trace.axd voi paljastaa hyökkääjille otsikko-, istunto- ja palvelinmuuttujat. Aseta localOnly=”true” tai poista se käytöstä. trackokonaan ennen käyttöönottoa, joten tracSähköistä dataa ei koskaan paljasteta etäkäyttäjille.

Server.Transfer välittää pyynnön palvelimen virhesivulle vaihtamatta selainta. URL tai edestakaisen matkan tekeminen. Response.Redirect lähettää uuden pyynnön selaimelle ja päivittää URL virhesivulle.

Kaappaa poikkeusviesti, pinoa trace, pyydetty URL, aikaleima ja käyttäjäkonteksti. Näiden tietojen avulla kehittäjät voivat toistaa virheen myöhemmin. Server.GetLastError Application_Error-muuttujassa paljastaa poikkeuksen, jotta voit kirjoittaa sen tiedostoon tai tietokantaan.

Tiivistä tämä viesti seuraavasti: