Livello di pagina ASP.NET Tracing, Debugging, Gestione degli errori

⚡ Riepilogo intelligente

Debug di ASP.NET, tracLa gestione degli errori in Visual Studio aiuta gli sviluppatori a individuare i problemi in anticipo e a seguire le richieste fino alla fine trace.axd, e reindirizzare gli utenti a pagine di errore personalizzate quando si verificano eccezioni non gestite durante il ciclo di vita di sviluppo e produzione.

  • 🐞 Debug: I breakpoint in Visual Studio mettono in pausa l'esecuzione, consentendoti di esaminare una pagina ASP.NET in esecuzione riga per riga.
  • 🔎 TracING: Abilitare trace in web.config aggiunge trace.axd, che elenca ogni richiesta, il relativo codice di stato e la tempistica.
  • 📄 Pagina TracING: Aggiunta TracL'opzione e="true" nella direttiva Page mostra la tempistica del ciclo di vita di una singola pagina.
  • 🚧 Errori personalizzati: Il tag customErrors reindirizza gli utenti a una pagina di errore intuitiva quando l'applicazione non riesce.
  • 🧭 Eccezioni non gestite: La variabile Application_Error presente nel file Global.asax intercetta gli errori imprevisti e reindirizza l'utente a una pagina sicura.
  • 🗃️ Registrazione degli errori: La scrittura dei dettagli di Server.GetLastError in un file registra i problemi per il debug successivo.

Livello di pagina ASP.NET TracGestione, debug e risoluzione degli errori

In qualsiasi applicazione, è probabile che si verifichino errori durante il processo di sviluppo. È importante poter scoprire gli errori in una fase iniziale.

In Visual Studio è possibile farlo per le applicazioni ASP.NET. Visual Studio viene utilizzato per il debug e dispone di tecniche di gestione degli errori per ASP.NET.

Cos'è il debug in ASP.NET?

Debug Il breakpoint è il processo di aggiunta di breakpoint a un'applicazione. Questi breakpoint vengono utilizzati per mettere in pausa l'esecuzione di un programma in corso. Ciò consente allo sviluppatore di comprendere cosa sta accadendo in un programma in un determinato momento.

Prendiamo come esempio un programma. Il programma visualizza all'utente la stringa "Stiamo eseguendo il debug". Supponiamo che, per qualche motivo, durante l'esecuzione dell'applicazione la stringa non venga visualizzata. Per identificare il problema, dobbiamo aggiungere un punto di interruzione. Possiamo aggiungere un punto di interruzione alla riga di codice che visualizza la stringa. Questo punto di interruzione metterà in pausa l'esecuzione del programma. A questo punto, il programmatore può vedere cosa potrebbe non funzionare e quindi correggere il programma di conseguenza.

In questo esempio, utilizzeremo la nostra DemoApplication creata nei capitoli precedenti. Nell'esempio seguente vedremo:

  • Come fare in modo che l'applicazione demo visualizzi una stringa.
  • Come aggiungere punti di interruzione a un'applicazione.
  • Come eseguire il debug dell'applicazione utilizzando questo punto di interruzione.

Come eseguire il debug di un'applicazione in ASP.NET

Di seguito sono riportati i passaggi per creare un'applicazione demo, aggiungere punti di interruzione ed eseguire il debug in ASP.NET:

Passaggio 1) Aprire l'applicazione in Visual Studio.
Innanzitutto, assicuriamoci che la nostra applicazione web sia aperta in Visual Studio. Verifichiamo che DemoApplication sia aperta in Visual Studio.

Eseguire il debug di un'applicazione in ASP.NET

Passaggio 2) Ora apri il file Demo.aspx.cs e aggiungi la riga di codice seguente.

  • Stiamo semplicemente aggiungendo la riga di codice Response.Write per visualizzare una stringa.
  • Pertanto, quando l'applicazione viene eseguita, dovrebbe visualizzare la stringa "Stiamo eseguendo il debug" nel browser web.

Eseguire il debug di un'applicazione in 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");
        }
    }
}

Passaggio 3) Aggiungere un punto di interruzione all'applicazione.
Un punto di interruzione è un punto in Visual Studio in cui si desidera interrompere l'esecuzione del programma.

Eseguire il debug di un'applicazione in ASP.NET

  1. Per aggiungere un punto di interruzione, è necessario fare clic sulla colonna in cui si desidera inserirlo. Nel nostro caso, vogliamo che il programma si fermi alla riga di codice "Response.Write". Non è necessario aggiungere alcun comando per inserire un punto di interruzione. Basta fare clic sulla riga in cui si desidera inserirlo.
  2. Fatto ciò, noterai che il codice viene contrassegnato in rosso. Inoltre, nella colonna accanto alla riga del codice appare una bolla rossa.

Nota: È possibile aggiungere più punti di interruzione in un'applicazione.

Passaggio 4) Eseguire l'applicazione in modalità debug.
Ora devi eseguire la tua applicazione usando la modalità Debug. In Visual Studio, scegli l'opzione di menu Debug->Start Debugging.

Eseguire il debug di un'applicazione in ASP.NET

Produzione:-

Eseguire il debug di un'applicazione in ASP.NET

Quando esegui tutti i passaggi correttamente, l'esecuzione del programma si interromperà. Visual Studio andrà al punto di interruzione e contrassegnerà la riga di codice in giallo.

Ora, se il programmatore ritiene che il codice non sia corretto, l'esecuzione può essere interrotta. Il codice può quindi essere modificato di conseguenza. Per continuare a procedere con il programma, il programmatore deve fare clic sul pulsante F5 sulla tastiera.

Cosa è Tracing in ASP.NET?

Applicazione tracING consente di vedere se le pagine richieste generano un errore. Quando tracè abilitata una pagina extra chiamata trace.axd è stato aggiunto all'applicazione (vedi immagine sotto). Questa pagina è collegata all'applicazione e mostrerà tutte le richieste e il loro stato.

Tracin ASP.NET

Come abilitare Tracprogettazione di un'applicazione in ASP.NET

Vediamo come abilitare traccercando un Applicazione ASP.NET:

Passo 1) Lavoriamo sulla nostra DemoApplication. Apri il file web.config da Esplora soluzioni.

Consentire a tutti tracprogettazione di un'applicazione in ASP.NET

Passo 2) Aggiungi la seguente riga di codice al file web.config. tracL'istruzione e viene utilizzata per abilitare tracing per l'applicazione.

  • Il requestLimit nel trace l'istruzione specifica il numero di richieste di pagina che devono essere traced.
  • Nel nostro esempio, impostiamo un limite di 40. Imponiamo un limite perché un valore superiore comprometterebbe le prestazioni dell'applicazione.

Consentire a tutti tracprogettazione di un'applicazione in 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>

Esegui l'applicazione demo in Visual Studio.

Produzione:-

Consentire a tutti tracprogettazione di un'applicazione in ASP.NET

Se ora navighi verso il URL http://localhost:53003/trace.axdQui potrai visualizzare le informazioni relative a ciascuna richiesta. Puoi verificare se si sono verificati errori nell'applicazione. Nella pagina vengono visualizzate le seguenti tipologie di informazioni:

  1. L'ora della richiesta della pagina web.
  2. Il nome della pagina web richiesta.
  3. Il codice di stato della richiesta web (un codice di stato 200 indica che la richiesta è andata a buon fine).
  4. Il link "Visualizza dettagli" consente di visualizzare maggiori informazioni sulla richiesta web. Un dettaglio importante fornito è l'intestazione, che mostra quali informazioni vengono inviate nell'intestazione di ogni richiesta web.

Consentire a tutti tracprogettazione di un'applicazione in ASP.NET

Livello di pagina Tracin ASP.NET

Livello di pagina TracING In ASP.NET vengono visualizzate tutte le informazioni generali su una pagina web durante la sua elaborazione. Questo è utile per il debug se una pagina non funziona per qualsiasi motivo. Visual Studio fornisce informazioni dettagliate su vari aspetti della pagina, come ad esempio il tempo impiegato da ciascun metodo chiamato nella richiesta web.

Ad esempio, se la tua applicazione web presenta un problema di prestazioni, queste informazioni possono essere utili per il debug. Queste informazioni vengono visualizzate quando l'applicazione viene eseguita in Visual Studio.

Come abilitare Tracing a livello di pagina in ASP.NET

Vediamo come abilitare il livello di pagina tracper un'applicazione ASP.NET:

Passo 1) Lavoriamo sulla nostra DemoApplication. Apri il file demo.aspx da Esplora soluzioni.

Livello di pagina Tracin ASP.NET

Passo 2) Aggiungi la seguente riga di codice per abilitare la pagina tracing. Nella dichiarazione della pagina, basta aggiungere l'attributo Trace="true". Questa riga di codice consentirà il livello di pagina tracING.

Livello di pagina Tracin 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>

Eseguire l'applicazione in Visual Studio.

Produzione:-

Livello di pagina Tracin ASP.NET

Ora, quando viene visualizzata la pagina Web Demo.aspx, otterrai molte informazioni sulla pagina. In questa pagina vengono visualizzate informazioni come il tempo per ciascun aspetto del ciclo di vita della pagina.

Gestione degli errori: visualizzazione di una pagina di errore personalizzata

In ASP.NET, è possibile visualizzare agli utenti pagine di errore personalizzate. Se un'applicazione contiene qualsiasi tipo di errore, una pagina personalizzata visualizzerà questo errore all'utente.

Nel nostro esempio, aggiungeremo innanzitutto una pagina HTML. Questa pagina visualizzerà all'utente la stringa "Stiamo esaminando il problema". Successivamente, aggiungeremo del codice di errore alla nostra pagina demo.aspx in modo che venga visualizzata la pagina di errore. Seguiamo i passaggi descritti di seguito.

Passo 1) Lavoriamo sulla nostra DemoApplication. Aggiungiamo una pagina HTML all'applicazione.

  1. Fai clic con il pulsante destro del mouse su DemoApplication in Esplora soluzioni.
  2. Seleziona l'opzione di menu Aggiungi->Pagina HTML.

Gestione degli errori in ASP.NET

Passo 2) Nel passaggio successivo, dobbiamo fornire un nome alla nuova pagina HTML.

  1. Specificare il nome ErrorPage.
  2. Fare clic sul pulsante OK per procedere.

Gestione degli errori in ASP.NET

Passo 3) La pagina di errore si aprirà automaticamente in Visual Studio. Se si accede a Esplora soluzioni, si vedrà il file aggiunto.

Gestione degli errori in ASP.NET

Aggiungi la riga di codice "Stiamo esaminando il problema" alla pagina HTML. Non è necessario chiudere il file HTML prima di apportare la modifica al file web.config.

Gestione degli errori in 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>

Passo 4) Ora è necessario apportare una modifica al file web.config. Questa modifica indicherà che, ogni volta che si verifica un errore nell'applicazione, deve essere visualizzata la pagina di errore personalizzata. Il tag customErrors consente di definire una pagina di errore personalizzata. La proprietà defaultRedirect viene impostata sul nome della pagina di errore personalizzata creata nel passaggio precedente.

Gestione degli errori in 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>

Passo 5) Ora aggiungiamo del codice errato alla pagina demo.aspx.cs. Apri questa pagina facendo doppio clic sul file in Esplora soluzioni.

Gestione degli errori in ASP.NET

Aggiungi il codice seguente al file Demo.aspx.cs.

  • Queste righe di codice sono progettate per leggere le righe di testo da un file.
  • Il file dovrebbe trovarsi nell'unità D con il nome Example.txt.
  • Ma nella nostra situazione, questo file in realtà non esiste. Quindi questo codice genererà un errore durante l'esecuzione dell'applicazione.

Gestione degli errori in 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);
        }
    }
}

Ora esegui il codice in Di Visual Studio e dovresti ottenere l'output seguente.

Produzione:-

Gestione degli errori in ASP.NET

La pagina sopra riportata indica che si è verificato un errore nell'applicazione. Di conseguenza, all'utente viene visualizzata la pagina ErrorPage.html.

Eccezione non gestita ASP.NET

Anche negli scenari migliori, possono verificarsi errori imprevedibili. Supponiamo che un utente acceda alla pagina sbagliata dell'applicazione. Questo è un evento impossibile da prevedere. In questi casi, ASP.NET può reindirizzare l'utente alla pagina ErrorPage.html.

Vediamo un esempio.

  • Utilizzeremo la nostra stessa DemoApplication che contiene il file ErrorPage.html.
  • E proveremo a visualizzare una pagina web che non esiste nella nostra applicazione.
  • In questo caso dovremmo essere reindirizzati alla nostra pagina ErrorPage.html. Vediamo i passaggi per ottenere questo risultato.

Passo 1) Lavoriamo sulla nostra DemoApplication. Apri il file Global.asax.cs da Esplora soluzioni.

Eccezione non gestita ASP.NET

Nota: Il file Global.asax.cs viene utilizzato per aggiungere codice che sarà applicabile a tutte le pagine dell'applicazione.

Passo 2) Aggiungi la seguente riga di codice al file Global.asax.cs. Queste righe verranno utilizzate per verificare la presenza di errori e visualizzare di conseguenza la pagina ErrorPage.html.

Eccezione non gestita 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 Spiegazione:-

  1. La prima riga rappresenta il gestore dell'evento Application_Error. Questo evento viene richiamato ogni volta che si verifica un errore nell'applicazione. Si noti che il nome dell'evento deve essere Application_Error e i parametri devono essere quelli indicati sopra.
  2. Successivamente, definiamo un oggetto del tipo di classe HttpException. Questo è un oggetto standard che conterrà tutti i dettagli dell'errore. Utilizziamo quindi il metodo Server.GetLastError per ottenere tutti i dettagli dell'ultimo errore verificatosi nell'applicazione.
  3. Successivamente, controlliamo se il codice di errore dell'ultimo errore è 404 (il codice di errore 404 è il codice standard restituito quando un utente tenta di accedere a una pagina non trovata). In tal caso, reindirizziamo l'utente alla pagina ErrorPage.html.

Ora esegui il codice in Visual Studio e dovresti ottenere l'output seguente.

Produzione:-

Sfoglia la pagina http://localhost:53003/Demo1.aspx. Ricorda che Demo1.aspx non esiste nella nostra applicazione. Otterrai quindi l'output seguente.

Eccezione non gestita in ASP.NET

La pagina sopra riportata indica che si è verificato un errore nell'applicazione. Di conseguenza, all'utente viene visualizzata la pagina ErrorPage.html.

Registrazione degli errori ASP.NET

La registrazione degli errori dell'applicazione aiuta lo sviluppatore a eseguire il debug e a risolvere il problema in un secondo momento. ASP.NET offre la possibilità di registrare gli errori. Questo avviene nel file Global.asax.cs quando l'errore viene intercettato. Durante il processo di intercettazione, il messaggio di errore può essere scritto in un file di log.

Vediamo un esempio.

  • Utilizzeremo la nostra stessa DemoApplication che contiene il file ErrorPage.html.
  • E proveremo a visualizzare una pagina web che non esiste nella nostra applicazione.
  • In questo caso dovremmo essere reindirizzati alla nostra pagina ErrorPage.html.
  • Allo stesso tempo, scriveremo il messaggio di errore in un file di registro. Vediamo i passaggi per raggiungere questo obiettivo.

Passo 1) Lavoriamo sulla nostra DemoApplication. Apri il file Global.asax.cs da Esplora soluzioni.

ASP.NET Registrazione degli errori

Passo 2) Aggiungi la seguente riga di codice al file Global.asax.cs. Questa riga controllerà la presenza di errori e visualizzerà la pagina ErrorPage.html di conseguenza. Inoltre, contemporaneamente, registreremo i dettagli dell'errore in un file chiamato AllErrors.txt. Nel nostro esempio, scriveremo del codice per creare questo file sull'unità D.

ASP.NET Registrazione degli errori

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

  1. La prima riga serve a recuperare l'errore stesso utilizzando il metodo Server.GetLastError. Questo viene poi assegnato alla variabile exc.
  2. Creiamo quindi una variabile stringa vuota chiamata str. Recuperiamo il messaggio di errore effettivo utilizzando la proprietà exc.Message. La proprietà exc.Message conterrà il messaggio esatto per qualsiasi errore che si verifica durante l'esecuzione dell'applicazione. Questo messaggio viene quindi assegnato alla variabile stringa.
  3. Successivamente, definiamo il file chiamato AllErrors.txt. È qui che verranno inviati tutti i messaggi di errore. Scriviamo in questo file la stringa str che contiene tutti i messaggi di errore.
  4. Infine, trasferiamo l'utente nel file ErrorPage.html.

Produzione:-

Sfoglia la pagina http://localhost:53003/Demo1.aspx. Ricorda che Demo1.aspx non esiste nella nostra applicazione. Otterrai quindi l'output seguente.

ASP.NET Registrazione degli errori

Allo stesso tempo, se apri il file AllErrors.txt, vedrai le seguenti informazioni.

ASP.NET Registrazione degli errori

Il messaggio di errore può quindi essere inoltrato allo sviluppatore in un secondo momento per scopi di debug.

DOMANDE FREQUENTI

Sì. Strumenti di intelligenza artificiale come GitHub Copilot possono suggerire punti di interruzione, spiegare un'eccezione e proporre soluzioni per il codice ASP.NET. RevEsamina ogni suggerimento e riproduci tu stesso il bug, poiché l'IA può interpretare erroneamente lo stato specifico dell'applicazione.

Sì. Funzionalità di apprendimento automatico in strumenti come Azure Application Insights è in grado di segnalare automaticamente picchi anomali di eccezioni o richieste lente. Questo aiuta i team a individuare i problemi di produzione più rapidamente rispetto all'analisi manuale dei file di log grezzi.

No. Lasciando la modalità customErrors disattivata si espone lo stack tracInformazioni sensibili e dettagli importanti vengono mostrati a ogni visitatore, il che rappresenta un rischio per la sicurezza. Utilizzare la modalità RemoteOnly o On in ambiente di produzione, in modo che solo gli sviluppatori locali possano visualizzare i dettagli completi dell'errore.

RemoteOnly mostra pagine di errore dettagliate solo ai browser sul server locale, mentre gli utenti remoti vengono reindirizzati alla pagina defaultRedirect. Rappresenta una soluzione intermedia sicura per il debug di un sito in produzione senza divulgare informazioni.

Imposta debug="false" nell'elemento di compilazione di web.config. La modalità debug disabilita le ottimizzazioni, mantiene i timeout lunghi e aumenta l'utilizzo della memoria, quindi i siti di produzione dovrebbero sempre essere distribuiti con essa disattivata. Di Visual Studio.

No. Un aperto trace.axd può rivelare intestazioni, sessioni e variabili del server agli aggressori. Imposta localOnly="true" o disabilita tracing interamente prima dell'implementazione quindi tracI dati non vengono mai esposti a utenti remoti.

Server.Transfer inoltra la richiesta alla pagina di errore sul server senza modificare il browser URL o facendo un viaggio di andata e ritorno. Response.Redirect invia una nuova richiesta al browser, aggiornando il URL alla pagina di errore.

Cattura il messaggio di eccezione, stack trace, richiesto URL, timestamp e contesto utente. Questi dettagli consentono agli sviluppatori di riprodurre l'errore in un secondo momento. Server.GetLastError in Application_Error espone l'eccezione in modo da poterla scrivere in un file o in un database.

Riassumi questo post con: