Úroveň stránky Asp.Net Tracing, ladění, ošetření chyb

⚡ Chytré shrnutí

Ladění ASP.NET, tracOšetřování chyb ve Visual Studiu pomáhá vývojářům včas odhalit problémy a plnit požadavky. trace.axd a přesměrovat uživatele na vlastní chybové stránky, když se během vývojového a produkčního cyklu vyskytnou neošetřené výjimky.

  • 🐞 Ladění: Zarážky v aplikaci Visual Studio pozastavují provádění, abyste mohli prohlížet spuštěnou stránku ASP.NET řádek po řádku.
  • 🔎 Tracing: Povolení trace v souboru web.config přidává trace.axd, který obsahuje seznam všech požadavků, jejich stavových kódů a časování.
  • 📄 Strana Tracing: Přidání Trace=”true” v direktivě Page zobrazuje dobu životního cyklu jedné stránky.
  • 🚧 Vlastní chyby: Tag customErrors přesměruje uživatele na popisnou chybovou stránku, když aplikace selže.
  • 🧭 Neošetřené výjimky: Application_Error v Global.asax zachytí neočekávané chyby a přesměruje na bezpečnou stránku.
  • 🗃️ Záznam chyb: Zápis podrobností Server.GetLastError do souboru zaznamenává problémy pro pozdější ladění.

Úroveň stránky ASP.NET Tracladění a ošetřování chyb

V jakékoli aplikaci se během procesu vývoje zákonitě vyskytnou chyby. Je důležité umět odhalit chyby v rané fázi.

Ve Visual Studiu je to možné pro ASP.NET aplikace. Visual Studio se používá pro ladění a má techniky pro ošetření chyb pro ASP.NET.

Co je ladění v ASP.NET?

Ladění je proces přidávání zarážek do aplikace. Tyto zarážky se používají k pozastavení provádění běžícího programu. To umožňuje vývojáři pochopit, co se v programu v určitém časovém okamžiku děje.

Vezměme si příklad programu. Program uživateli zobrazí řetězec „Provádíme ladění“. Předpokládejme, že když spustíme aplikaci, řetězec se z nějakého důvodu nezobrazí. Abychom identifikovali problém, musíme přidat zarážku. Zarážku můžeme přidat do řádku kódu, který zobrazuje řetězec. Tato zarážka pozastaví provádění programu. V tomto okamžiku programátor vidí, co je pravděpodobně špatně. Programátor program odpovídajícím způsobem opraví.

V tomto příkladu použijeme naši DemoApplication, která byla vytvořena v předchozích kapitolách. V následujícím příkladu uvidíme:

  • Jak přimět demo aplikaci zobrazovat řetězec.
  • Jak přidat body přerušení do aplikace.
  • Jak ladit aplikaci pomocí tohoto bodu přerušení.

Jak ladit aplikaci v ASP.NET

Níže jsou uvedeny kroky pro vytvoření demo aplikace, přidání zarážek a ladění v ASP.NET:

Krok 1) Otevřete aplikaci ve Visual Studiu.
Nejprve se ujistěte, že máme naši webovou aplikaci otevřenou ve Visual Studiu. Ujistěte se, že je ve Visual Studiu otevřená aplikace DemoApplication.

Ladění aplikace v ASP.NET

Krok 2) Nyní otevřete soubor Demo.aspx.cs a přidejte níže uvedený řádek kódu.

  • Právě přidáváme řádek kódu Response.Write pro zobrazení řetězce.
  • Když se tedy aplikace spustí, měla by ve webovém prohlížeči zobrazit řetězec „Ladíme“.

Ladění aplikace v 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");
        }
    }
}

Krok 3) Přidejte do aplikace zarážku.
Bod přerušení je bod v sadě Visual Studio, kde chcete zastavit provádění programu.

Ladění aplikace v ASP.NET

  1. Chcete-li přidat zarážku, musíte kliknout na sloupec, kam chcete zarážku vložit. V našem případě tedy chceme, aby se náš program zastavil na řádku kódu „Response.Write“. Pro přidání zarážky není třeba přidávat žádný příkaz. Stačí kliknout na řádek, na který chcete zarážku přidat.
  2. Jakmile to uděláte, všimnete si, že kód je označen červeně. Ve sloupci vedle řádku kódu se také objeví červená bublina.

Poznámka: V aplikaci můžete přidat více zarážek.

Krok 4) Spusťte aplikaci v režimu ladění.
Nyní musíte spustit aplikaci pomocí režimu ladění. V sadě Visual Studio vyberte možnost nabídky Debug->Start Debugging.

Ladění aplikace v ASP.NET

Výstup:-

Ladění aplikace v ASP.NET

Když provedete všechny kroky správně, provádění programu se přeruší. Visual Studio přejde na bod přerušení a označí řádek kódu žlutě.

Nyní, pokud má programátor pocit, že kód je nesprávný, může být provádění zastaveno. Kód lze poté odpovídajícím způsobem upravit. Aby mohl programátor pokračovat v programu, musí kliknout na tlačítko F5 na klávesnici.

Co je to Tracv ASP.NET?

editaci videa tracing. umožňuje zjistit, zda některé požadované stránky vedou k chybě. Kdy tracje povoleno, zobrazí se další stránka s názvem tracSoubor e.axd je přidán do aplikace (viz obrázek níže). Tato stránka je připojena k aplikaci a zobrazuje všechny požadavky a jejich stav.

Tracv ASP.NET

Jak povolit Tracpro aplikaci v ASP.NET

Pojďme se podívat na to, jak povolit tracing pro Aplikace ASP.NET:

Krok 1) Pojďme pracovat na naší DemoApplication. Otevřete soubor web.config z Solution Exploreru.

umožnit tracpro aplikaci v ASP.NET

Krok 2) Přidejte níže uvedený řádek kódu do souboru web.config. tracPříkaz e se používá k povolení tracpro aplikaci.

  • RequestLimit v tracPříkaz e určuje počet požadavků na stránku, které musí být provedeny. traced.
  • V našem příkladu udáváme limit 40. Limit uvádíme proto, že vyšší hodnota sníží výkon aplikace.

umožnit tracpro aplikaci v 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>

Spusťte DemoApplication ve Visual Studiu.

Výstup:-

umožnit tracpro aplikaci v ASP.NET

Pokud nyní přejdete na URL http://localhost:53003/trace.axd, zobrazí se informace pro každý požadavek. Zde můžete vidět, zda se v aplikaci vyskytly nějaké chyby. Na stránce se zobrazují následující typy informací:

  1. Čas požadavku na webovou stránku.
  2. Název požadované webové stránky.
  3. Stavový kód webového požadavku (stavový kód 200 znamená, že požadavek byl úspěšný).
  4. Odkaz Zobrazit podrobnosti, který umožňuje zobrazit další podrobnosti o webovém požadavku. Důležitým údajem jsou informace v záhlaví, které ukazují, jaké informace se odesílají v záhlaví každého webového požadavku.

umožnit tracpro aplikaci v ASP.NET

Úroveň stránky Tracv ASP.NET

Úroveň stránky Tracing. V ASP.NET zobrazuje všechny obecné informace o webové stránce během jejího zpracování. To je užitečné při ladění, pokud stránka z jakéhokoli důvodu nefunguje. Visual Studio poskytuje podrobné informace o různých aspektech stránky, například čas pro každou metodu, která je volána ve webovém požadavku.

Například pokud má vaše webová aplikace problém s výkonem, tyto informace mohou pomoci s laděním problému. Tyto informace se zobrazují při spuštění aplikace v aplikaci Visual Studio.

Jak povolit Tracna úrovni stránky v ASP.NET

Podívejme se, jak povolit úroveň stránky tracpro ASP.NET aplikaci:

Krok 1) Pojďme pracovat na naší DemoApplication. Otevřete soubor demo.aspx z Průzkumníka řešení.

Úroveň stránky Tracv ASP.NET

Krok 2) Přidejte níže uvedený řádek kódu pro povolení stránky tracing. V deklaraci stránky stačí přidat atribut Trace=”true”. Tento řádek kódu povolí tracIng.

Úroveň stránky Tracv 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>

Spusťte aplikaci v sadě Visual Studio.

Výstup:-

Úroveň stránky Tracv ASP.NET

Nyní, když se zobrazí webová stránka Demo.aspx, získáte o stránce spoustu informací. Na této stránce se zobrazují informace, jako je čas pro každý aspekt životního cyklu stránky.

Zpracování chyb: Zobrazení vlastní chybové stránky

In ASP.NET, můžete uživatelům zobrazit vlastní chybové stránky. Pokud aplikace obsahuje jakýkoli druh chyby, uživatelská stránka tuto chybu zobrazí uživateli.

V našem příkladu nejprve přidáme HTML stránku. Tato stránka zobrazí uživateli řetězec „Problém řešíme“. Poté na naši stránku demo.aspx přidáme chybový kód, aby se chybová stránka zobrazila. Postupujme podle níže uvedených kroků.

Krok 1) Pojďme pracovat na naší DemoApplication. Přidejme do aplikace HTML stránku.

  1. V Průzkumníku řešení klikněte pravým tlačítkem myši na DemoApplication.
  2. V nabídce vyberte možnost Přidat->HTML stránka.

Ošetření chyb v ASP.NET

Krok 2) V dalším kroku musíme zadat název nové HTML stránky.

  1. Zadejte název jako ErrorPage.
  2. Pokračujte kliknutím na tlačítko OK.

Ošetření chyb v ASP.NET

Krok 3) Stránka ErrorPage se automaticky otevře ve Visual Studiu. Pokud přejdete do Průzkumníka řešení, uvidíte přidáný soubor.

Ošetření chyb v ASP.NET

Přidejte na HTML stránku kód „Problém řešíme“. Před provedením změny v souboru web.config není nutné HTML soubor zavírat.

Ošetření chyb v 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>

Krok 4) Nyní je třeba provést změnu v souboru web.config. Tato změna upozorní, že vždy, když v aplikaci dojde k chybě, je třeba zobrazit vlastní chybovou stránku. Tag customErrors umožňuje definovat vlastní chybovou stránku. Vlastnost defaultRedirect je nastavena na název naší vlastní chybové stránky vytvořené v předchozím kroku.

Ošetření chyb v 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>

Krok 5) Nyní přidejme chybný kód na stránku demo.aspx.cs. Otevřete tuto stránku dvojitým kliknutím na soubor v Průzkumníku řešení.

Ošetření chyb v ASP.NET

Přidejte níže uvedený kód do souboru Demo.aspx.cs.

  • Tyto řádky kódu jsou navrženy tak, aby četly řádky textu ze souboru.
  • Soubor by se měl nacházet na disku D a měl by se nazývat Example.txt.
  • Ale v naší situaci tento soubor ve skutečnosti neexistuje. Tento kód tedy povede k chybě při spuštění aplikace.

Ošetření chyb v 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);
        }
    }
}

Nyní spusťte kód v Visual Studio a měli byste získat níže uvedený výstup.

Výstup:-

Ošetření chyb v ASP.NET

Výše uvedená stránka ukazuje, že v aplikaci došlo k chybě. V důsledku toho se uživateli zobrazí stránka ErrorPage.html.

Neošetřená výjimka ASP.NET

I v nejlepším případě se mohou vyskytnout chyby, které nelze předvídat. Předpokládejme, že uživatel přejde na nesprávnou stránku v aplikaci. To je něco, co nelze předvídat. V takových případech může ASP.NET uživatele přesměrovat na soubor ErrorPage.html.

Podívejme se na příklad.

  • Použijeme stejnou DemoApplication, která má soubor ErrorPage.html.
  • A my se pokusíme zobrazit webovou stránku, která v naší aplikaci neexistuje.
  • V tomto případě bychom měli být přesměrováni na stránku ErrorPage.html. Podívejme se na kroky, jak toho dosáhnout.

Krok 1) Pojďme pracovat na naší DemoApplication. Otevřete soubor Global.asax.cs z Průzkumníka řešení.

Neošetřená výjimka ASP.NET

Poznámka: Soubor Global.asax.cs se používá k přidání kódu, který bude použitelný na všech stránkách aplikace.

Krok 2) Přidejte níže uvedený řádek kódu do souboru Global.asax.cs. Tyto řádky budou použity ke kontrole chyb a zobrazení stránky ErrorPage.html.

Neošetřená výjimka ASP.NET

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 Vysvětlení:-

  1. První řádek je obslužná rutina události Application_Error. Tato událost se volá vždy, když v aplikaci dojde k chybě. Upozorňujeme, že název události musí být Application_Error a parametry by měly být takové, jak je uvedeno výše.
  2. Dále definujeme objekt třídy typu HttpException. Toto je standardní objekt, který bude obsahovat všechny podrobnosti o chybě. Poté použijeme metodu Server.GetLastError k získání všech podrobností o poslední chybě, která se v aplikaci vyskytla.
  3. Poté zkontrolujeme, zda je kód chyby poslední chyby 404 (kód chyby 404 je standardní kód vrácený, když uživatel přejde na stránku, která nebyla nalezena). Pokud se kód chyby shoduje, přesměrujeme uživatele na stránku ErrorPage.html.

Nyní spusťte kód ve Visual Studiu a měli byste dostat níže uvedený výstup.

Výstup:-

Procházejte stránku http://localhost:53003/Demo1.aspx. Pamatujte, že Demo1.aspx v naší aplikaci neexistuje. Poté získáte níže uvedený výstup.

Neošetřená výjimka v ASP.NET

Výše uvedená stránka ukazuje, že v aplikaci došlo k chybě. V důsledku toho se uživateli zobrazí stránka ErrorPage.html.

Protokolování chyb ASP.NET

Protokolováním chyb aplikace pomáhá vývojáři ladit a chybu později vyřešit. ASP.NET má funkci protokolování chyb. To se provádí v souboru Global.asax.cs po zachycení chyby. Během procesu zachycení lze chybovou zprávu zapsat do souboru protokolu.

Podívejme se na příklad.

  • Použijeme stejnou DemoApplication, která má soubor ErrorPage.html.
  • A my se pokusíme zobrazit webovou stránku, která v naší aplikaci neexistuje.
  • V tomto případě bychom měli být přesměrováni na naši stránku ErrorPage.html.
  • A zároveň zapíšeme chybovou zprávu do souboru protokolu. Podívejme se na kroky, jak toho dosáhnout.

Krok 1) Pojďme pracovat na naší DemoApplication. Otevřete soubor Global.asax.cs z Průzkumníka řešení.

Protokolování chyb ASP.NET

Krok 2) Přidejte níže uvedený řádek kódu do souboru Global.asax.cs. Provede se kontrola chyb a zobrazení stránky ErrorPage.html. Zároveň se zaznamenají podrobnosti o chybě do souboru s názvem AllErrors.txt. V našem příkladu napíšeme kód pro vytvoření tohoto souboru na disku D.

Protokolování chyb ASP.NET

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 Vysvětlení:-

  1. První řádek slouží k získání samotné chyby pomocí metody Server.GetLastError. Ta je poté přiřazena proměnné exc.
  2. Poté vytvoříme prázdnou řetězcovou proměnnou s názvem str. Skutečnou chybovou zprávu získáme pomocí vlastnosti exc.Message. Vlastnost exc.Message bude obsahovat přesnou zprávu pro jakoukoli chybu, která se vyskytne při spuštění aplikace. Ta je poté přiřazena řetězcové proměnné.
  3. Dále definujeme soubor s názvem AllErrors.txt. Sem budou odesílány všechny chybové zprávy. Do tohoto souboru zapíšeme řetězec str, který obsahuje všechny chybové zprávy.
  4. Nakonec uživatele přeneseme do souboru ErrorPage.html.

Výstup:-

Procházejte stránku http://localhost:53003/Demo1.aspx. Pamatujte, že Demo1.aspx v naší aplikaci neexistuje. Poté získáte níže uvedený výstup.

Protokolování chyb ASP.NET

A zároveň, pokud otevřete soubor AllErrors.txt, uvidíte níže uvedené informace.

Protokolování chyb ASP.NET

Chybová zpráva pak může být předána vývojáři později pro účely ladění.

Nejčastější dotazy

Ano. Nástroje umělé inteligence, jako je GitHub Copilot, dokáží navrhovat zarážky, vysvětlovat výjimky a navrhovat opravy kódu ASP.NET. RevProhlédněte si každý návrh a chybu reprodukujte sami, protože umělá inteligence může špatně interpretovat stav specifický pro danou aplikaci.

Ano. Funkce strojového učení v nástrojích jako Azure Application Insights dokáže automaticky označit neobvyklé nárůsty výjimek nebo pomalých požadavků. To pomáhá týmům najít problémy v produkčním prostředí rychleji než ruční prohledávání nezpracovaných souborů protokolů.

Ne. Opuštění režimu customErrors (vypnuto) zpřístupní zásobník. traca citlivé údaje každému návštěvníkovi, což představuje bezpečnostní riziko. V produkčním prostředí použijte režim Pouze vzdáleně nebo Zapnuto, aby úplné podrobnosti o chybě viděli pouze lokální vývojáři.

RemoteOnly zobrazuje podrobné chybové stránky pouze prohlížečům na lokálním serveru, zatímco vzdálení uživatelé jsou přesměrováni na stránku defaultRedirect. Jedná se o bezpečný kompromis pro ladění živého webu bez úniku informací.

V kompilačním elementu web.config nastavte debug=”false”. Režim ladění zakáže optimalizace, udržuje dlouhé časové limity a zvětšuje využití paměti, takže produkční weby by měly být vždy dodávány s vypnutým režimem. Visual Studio.

Ne. Otevřený trace.axd může útočníkům odhalit hlavičky, proměnné relace a serveru. Nastavte localOnly=”true” nebo tuto možnost zakažte. traczcela před nasazením, takže tracData nejsou nikdy zpřístupněna vzdáleným uživatelům.

Server.Transfer přeposílá požadavek na chybovou stránku na serveru bez změny prohlížeče. URL nebo provedení okružní cesty. Response.Redirect odešle do prohlížeče nový požadavek a aktualizuje URL na chybovou stránku.

Zachycení zprávy o výjimce, zásobník trace, požadováno URL, časové razítko a kontext uživatele. Tyto podrobnosti umožňují vývojářům později reprodukovat chybu. Server.GetLastError v Application_Error zpřístupňuje výjimku, abyste ji mohli zapsat do souboru nebo databáze.

Shrňte tento příspěvek takto: