Επίπεδο σελίδας Asp.Net Tracing, Αποσφαλμάτωση, Χειρισμός σφαλμάτων

⚡ Έξυπνη Σύνοψη

Αποσφαλμάτωση ASP.NET, tracΗ διαχείριση σφαλμάτων και σφαλμάτων στο Visual Studio βοηθά τους προγραμματιστές να εντοπίζουν προβλήματα νωρίς και να ακολουθούν τα αιτήματα μέχρι το τέλος. trace.axd και ανακατευθύνει τους χρήστες σε προσαρμοσμένες σελίδες σφαλμάτων όταν προκύπτουν μη αντιμετωπισμένες εξαιρέσεις κατά τη διάρκεια του κύκλου ζωής ανάπτυξης και παραγωγής.

  • 🐞 Εντοπισμός σφαλμάτων: Τα σημεία διακοπής στο Visual Studio διακόπτουν την εκτέλεση, ώστε να μπορείτε να ελέγξετε μια σελίδα ASP.NET που εκτελείται γραμμή προς γραμμή.
  • 🔎 Trac: Ενεργοποίηση trace στο web.config προσθέτει trace.axd, το οποίο παραθέτει κάθε αίτημα, τον κωδικό κατάστασής του και τον χρόνο χρονοδιαγράμματος.
  • 📄 Σελίδα Trac: Προσθέτοντας TracΗ τιμή e="true" στην οδηγία Page δείχνει τον χρόνο κύκλου ζωής για μία μόνο σελίδα.
  • 🚧 Προσαρμοσμένα σφάλματα: Η ετικέτα customErrors ανακατευθύνει τους χρήστες σε μια φιλική σελίδα σφάλματος όταν η εφαρμογή αποτύχει.
  • 🧭 Μη αντιμετωπισμένες εξαιρέσεις: Το Application_Error στο Global.asax εντοπίζει μη αναμενόμενα σφάλματα και ανακατευθύνει σε μια ασφαλή σελίδα.
  • 🗃️ Καταγραφή σφαλμάτων: Η εγγραφή λεπτομερειών του Server.GetLastError σε ένα αρχείο καταγράφει προβλήματα για μελλοντικό εντοπισμό σφαλμάτων.

Επίπεδο σελίδας ASP.NET Tracing, εντοπισμός σφαλμάτων και διαχείριση σφαλμάτων

Σε οποιαδήποτε εφαρμογή, είναι βέβαιο ότι θα προκύψουν σφάλματα κατά τη διαδικασία ανάπτυξης. Είναι σημαντικό να μπορείτε να ανακαλύπτετε σφάλματα σε πρώιμο στάδιο.

Στο Visual Studio, είναι δυνατό να γίνει αυτό για εφαρμογές ASP.NET. Το Visual Studio χρησιμοποιείται για τον εντοπισμό σφαλμάτων και διαθέτει τεχνικές χειρισμού σφαλμάτων για το ASP.NET.

Τι είναι ο εντοπισμός σφαλμάτων στο ASP.NET;

Debugging είναι η διαδικασία προσθήκης σημείων διακοπής σε μια εφαρμογή. Αυτά τα σημεία διακοπής χρησιμοποιούνται για την παύση της εκτέλεσης ενός προγράμματος που εκτελείται. Αυτό επιτρέπει στον προγραμματιστή να κατανοήσει τι συμβαίνει σε ένα πρόγραμμα σε μια συγκεκριμένη χρονική στιγμή.

Ας πάρουμε ένα παράδειγμα ενός προγράμματος. Το πρόγραμμα εμφανίζει στον χρήστη μια συμβολοσειρά "We are debugging" (Πραγματοποιούμε εντοπισμό σφαλμάτων). Ας υποθέσουμε ότι όταν εκτελούμε την εφαρμογή, για κάποιο λόγο, η συμβολοσειρά δεν εμφανίζεται. Για να εντοπίσουμε το πρόβλημα, πρέπει να προσθέσουμε ένα σημείο διακοπής. Μπορούμε να προσθέσουμε ένα σημείο διακοπής στη γραμμή κώδικα που εμφανίζει τη συμβολοσειρά. Αυτό το σημείο διακοπής θα διακόψει την εκτέλεση του προγράμματος. Σε αυτό το σημείο, ο προγραμματιστής μπορεί να δει τι πιθανώς πάει στραβά. Ο προγραμματιστής διορθώνει το πρόγραμμα ανάλογα.

Εδώ στο παράδειγμα, θα χρησιμοποιήσουμε την εφαρμογή DemoApplication που δημιουργήθηκε σε προηγούμενα κεφάλαια. Στο ακόλουθο παράδειγμα, θα δούμε:

  • Πώς να κάνετε την εφαρμογή επίδειξης να εμφανίζει μια συμβολοσειρά.
  • Πώς να προσθέσετε σημεία διακοπής σε μια εφαρμογή.
  • Τρόπος εντοπισμού σφαλμάτων της εφαρμογής χρησιμοποιώντας αυτό το σημείο διακοπής.

Πώς να εντοπίσετε σφάλματα σε μια εφαρμογή στο ASP.NET

Παρακάτω παρατίθενται τα βήματα για τη δημιουργία μιας εφαρμογής επίδειξης, την προσθήκη σημείων διακοπής και την ανίχνευση σφαλμάτων στο ASP.NET:

Βήμα 1) Ανοίξτε την εφαρμογή στο Visual Studio.
Ας βεβαιωθούμε πρώτα ότι έχουμε ανοιχτή την εφαρμογή web στο Visual Studio. Βεβαιωθείτε ότι η εφαρμογή Demo είναι ανοιχτή στο Visual Studio.

Εντοπισμός σφαλμάτων μιας εφαρμογής στο ASP.NET

Βήμα 2) Τώρα ανοίξτε το αρχείο Demo.aspx.cs και προσθέστε την παρακάτω γραμμή κώδικα.

  • Απλώς προσθέτουμε τη γραμμή κώδικα Response.Write για να εμφανίσουμε μια συμβολοσειρά.
  • Έτσι, όταν εκτελείται η εφαρμογή, θα πρέπει να εμφανίζει τη συμβολοσειρά "Εμείς κάνουμε εντοπισμό σφαλμάτων" στο πρόγραμμα περιήγησης ιστού.

Εντοπισμός σφαλμάτων μιας εφαρμογής στο 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");
        }
    }
}

Βήμα 3) Προσθέστε ένα σημείο διακοπής στην εφαρμογή.
Ένα σημείο διακοπής είναι ένα σημείο στο Visual Studio όπου θέλετε να σταματήσει η εκτέλεση του προγράμματος.

Εντοπισμός σφαλμάτων μιας εφαρμογής στο ASP.NET

  1. Για να προσθέσετε ένα σημείο διακοπής, πρέπει να κάνετε κλικ στη στήλη όπου θέλετε να εισαχθεί το σημείο διακοπής. Έτσι, στην περίπτωσή μας, θέλουμε το πρόγραμμά μας να σταματά στη γραμμή κώδικα "Response.Write". Δεν χρειάζεται να προσθέσετε κάποια εντολή για να προσθέσετε ένα σημείο διακοπής. Απλώς πρέπει να κάνετε κλικ στη γραμμή στην οποία θέλετε να προσθέσετε ένα σημείο διακοπής.
  2. Μόλις γίνει αυτό, θα παρατηρήσετε ότι ο κωδικός σημειώνεται με κόκκινο χρώμα. Επίσης, εμφανίζεται ένα κόκκινο συννεφάκι στη στήλη δίπλα στη γραμμή κώδικα.

Σημείωση: Μπορείτε να προσθέσετε πολλά σημεία διακοπής σε μια εφαρμογή.

Βήμα 4) Εκτελέστε την εφαρμογή σε λειτουργία εντοπισμού σφαλμάτων.
Τώρα πρέπει να εκτελέσετε την εφαρμογή σας χρησιμοποιώντας τη λειτουργία εντοπισμού σφαλμάτων. Στο Visual Studio, επιλέξτε την επιλογή μενού Debug->Start Debugging.

Εντοπισμός σφαλμάτων μιας εφαρμογής στο ASP.NET

Παραγωγή:-

Εντοπισμός σφαλμάτων μιας εφαρμογής στο ASP.NET

Όταν εκτελέσετε όλα τα βήματα σωστά, η εκτέλεση του προγράμματος θα διακοπεί. Το Visual Studio θα μεταβεί στο σημείο διακοπής και θα σημειώσει τη γραμμή κώδικα με κίτρινο χρώμα.

Τώρα, εάν ο προγραμματιστής αισθάνεται ότι ο κώδικας είναι λανθασμένος, η εκτέλεση μπορεί να διακοπεί. Ο κωδικός μπορεί στη συνέχεια να τροποποιηθεί ανάλογα. Για να συνεχίσει να συνεχίζει το πρόγραμμα, ο προγραμματιστής πρέπει να κάνει κλικ στο κουμπί F5 στο πληκτρολόγιο.

Τι είναι TracΧρησιμοποιώ ASP.NET;

Εφαρμογή tracING επιτρέπει σε κάποιον να δει εάν τυχόν σελίδες που ζητήθηκαν οδηγούν σε σφάλμα. Όταν tracενεργοποιείται, μια επιπλέον σελίδα που ονομάζεται tracΤο e.axd προστίθεται στην εφαρμογή (δείτε την εικόνα παρακάτω). Αυτή η σελίδα είναι επισυναπτόμενη στην εφαρμογή και θα εμφανίζει όλα τα αιτήματα και την κατάστασή τους.

Tracing σε ASP.NET

Πώς να ενεργοποιήσετε Tracγια μια εφαρμογή σε ASP.NET

Ας δούμε πώς να ενεργοποιήσουμε tracψάχνοντας για ένα Εφαρμογή ASP.NET:

Βήμα 1) Ας εργαστούμε πάνω στην εφαρμογή DemoApplication. Ανοίξτε το αρχείο web.config από την Εξερεύνηση λύσεων.

Ενεργοποίηση tracγια μια εφαρμογή σε ASP.NET

Βήμα 2) Προσθέστε την παρακάτω γραμμή κώδικα στο αρχείο web.config. tracΗ εντολή e χρησιμοποιείται για να ενεργοποιηθεί tracγια την εφαρμογή.

  • Το requestLimit στο tracΗ εντολή e καθορίζει τον αριθμό των αιτημάτων σελίδας που πρέπει να γίνουν. traced.
  • Στο παράδειγμά μας, δίνουμε ένα όριο 40. Δίνουμε ένα όριο επειδή μια υψηλότερη τιμή θα υποβαθμίσει την απόδοση της εφαρμογής.

Ενεργοποίηση tracγια μια εφαρμογή σε 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>

Εκτελέστε την εφαρμογή Demo στο Visual Studio.

Παραγωγή:-

Ενεργοποίηση tracγια μια εφαρμογή σε ASP.NET

Αν τώρα περιηγηθείτε στο URL http://localhost:53003/trace.axd, θα δείτε τις πληροφορίες για κάθε αίτημα. Εδώ μπορείτε να δείτε εάν προκύψουν σφάλματα σε μια εφαρμογή. Οι ακόλουθοι τύποι πληροφοριών εμφανίζονται στη σελίδα:

  1. Η ώρα της αίτησης για την ιστοσελίδα.
  2. Το όνομα της ιστοσελίδας που ζητείται.
  3. Ο κωδικός κατάστασης του αιτήματος ιστού (ένας κωδικός κατάστασης 200 σημαίνει ότι το αίτημα είναι επιτυχές).
  4. Ο σύνδεσμος Προβολή λεπτομερειών σάς επιτρέπει να δείτε περισσότερες λεπτομέρειες σχετικά με το αίτημα ιστού. Μια σημαντική λεπτομέρεια που παρέχεται είναι οι πληροφορίες κεφαλίδας, οι οποίες δείχνουν ποιες πληροφορίες αποστέλλονται στην κεφαλίδα κάθε αιτήματος ιστού.

Ενεργοποίηση tracγια μια εφαρμογή σε ASP.NET

Επίπεδο σελίδας Tracing σε ASP.NET

Επίπεδο σελίδας TracING στο ASP.NET εμφανίζει όλες τις γενικές πληροφορίες σχετικά με μια ιστοσελίδα κατά την επεξεργασία της. Αυτό είναι χρήσιμο για τον εντοπισμό σφαλμάτων εάν μια σελίδα δεν λειτουργεί για οποιονδήποτε λόγο. Το Visual Studio παρέχει λεπτομερείς πληροφορίες σχετικά με διάφορες πτυχές της σελίδας, όπως τον χρόνο για κάθε μέθοδο που καλείται στο αίτημα ιστού.

Για παράδειγμα, εάν η εφαρμογή web σας αντιμετωπίζει κάποιο πρόβλημα απόδοσης, αυτές οι πληροφορίες μπορούν να βοηθήσουν στην αντιμετώπιση του προβλήματος. Αυτές οι πληροφορίες εμφανίζονται όταν η εφαρμογή εκτελείται στο Visual Studio.

Πώς να ενεργοποιήσετε Tracσε επίπεδο σελίδας στο ASP.NET

Ας δούμε πώς να ενεργοποιήσουμε το επίπεδο σελίδας tracγια μια εφαρμογή ASP.NET:

Βήμα 1) Ας εργαστούμε πάνω στην εφαρμογή Demo. Ανοίξτε το αρχείο demo.aspx από την Εξερεύνηση λύσεων.

Επίπεδο σελίδας Tracing σε ASP.NET

Βήμα 2) Προσθέστε την παρακάτω γραμμή κώδικα για να ενεργοποιήσετε τη σελίδα tracing. Στη δήλωση Σελίδας, απλώς προσθέστε το χαρακτηριστικό Trace=”true”. Αυτή η γραμμή κώδικα θα επιτρέψει το επίπεδο σελίδας tracING.

Επίπεδο σελίδας Tracing σε 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>

Εκτελέστε την εφαρμογή στο Visual Studio.

Παραγωγή:-

Επίπεδο σελίδας Tracing σε ASP.NET

Τώρα, όταν εμφανίζεται η ιστοσελίδα Demo.aspx, θα λάβετε πολλές πληροφορίες για τη σελίδα. Πληροφορίες όπως ο χρόνος για κάθε πτυχή του κύκλου ζωής της σελίδας εμφανίζονται σε αυτήν τη σελίδα.

Χειρισμός σφαλμάτων: Εμφάνιση προσαρμοσμένης σελίδας σφαλμάτων

In ASP.NET, μπορείτε να έχετε προσαρμοσμένες σελίδες σφαλμάτων που εμφανίζονται στους χρήστες. Εάν μια εφαρμογή περιέχει οποιοδήποτε είδος σφάλματος, μια προσαρμοσμένη σελίδα θα εμφανίσει αυτό το σφάλμα στον χρήστη.

Στο παράδειγμά μας, θα προσθέσουμε πρώτα μια σελίδα HTML. Αυτή η σελίδα θα εμφανίσει μια συμβολοσειρά στον χρήστη με τη φράση "Εξετάζουμε το πρόβλημα". Στη συνέχεια, θα προσθέσουμε κάποιο κωδικό σφάλματος στη σελίδα demo.aspx, ώστε να εμφανιστεί η σελίδα σφάλματος. Ας ακολουθήσουμε τα παρακάτω βήματα.

Βήμα 1) Ας δουλέψουμε πάνω στην εφαρμογή Demo. Ας προσθέσουμε μια σελίδα HTML στην εφαρμογή.

  1. Κάντε δεξί κλικ στην εφαρμογή Demo στην Εξερεύνηση λύσεων.
  2. Επιλέξτε την επιλογή μενού Προσθήκη->Σελίδα HTML.

Χειρισμός σφαλμάτων στο ASP.NET

Βήμα 2) Στο επόμενο βήμα, πρέπει να δώσουμε ένα όνομα στη νέα σελίδα HTML.

  1. Δώστε το όνομα ως ErrorPage.
  2. Κάντε κλικ στο κουμπί OK για να προχωρήσετε.

Χειρισμός σφαλμάτων στο ASP.NET

Βήμα 3) Η σελίδα σφάλματος (ErrorPage) θα ανοίξει αυτόματα στο Visual Studio. Εάν μεταβείτε στην Εξερεύνηση λύσεων (Solution Explorer), θα δείτε το αρχείο να έχει προστεθεί.

Χειρισμός σφαλμάτων στο ASP.NET

Προσθέστε τη γραμμή κώδικα "Εξετάζουμε το πρόβλημα" στη σελίδα HTML. Δεν χρειάζεται να κλείσετε το αρχείο HTML πριν κάνετε την αλλαγή στο αρχείο web.config.

Χειρισμός σφαλμάτων στο 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>

Βήμα 4) Τώρα πρέπει να κάνετε μια αλλαγή στο αρχείο web.config. Αυτή η αλλαγή θα σας ειδοποιεί ότι κάθε φορά που παρουσιάζεται σφάλμα στην εφαρμογή, θα πρέπει να εμφανίζεται η προσαρμοσμένη σελίδα σφάλματος. Η ετικέτα customErrors επιτρέπει τον ορισμό μιας προσαρμοσμένης σελίδας σφάλματος. Η ιδιότητα defaultRedirect ορίζεται στο όνομα της προσαρμοσμένης σελίδας σφάλματος που δημιουργήθηκε στο προηγούμενο βήμα.

Χειρισμός σφαλμάτων στο 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>

Βήμα 5) Τώρα ας προσθέσουμε κάποιον ελαττωματικό κώδικα στη σελίδα demo.aspx.cs. Ανοίξτε αυτήν τη σελίδα κάνοντας διπλό κλικ στο αρχείο στην Εξερεύνηση λύσεων.

Χειρισμός σφαλμάτων στο ASP.NET

Προσθέστε τον παρακάτω κώδικα στο αρχείο Demo.aspx.cs.

  • Αυτές οι γραμμές κώδικα έχουν σχεδιαστεί για να διαβάζουν τις γραμμές κειμένου από ένα αρχείο.
  • Το αρχείο υποτίθεται ότι βρίσκεται στη μονάδα δίσκου D με το όνομα Example.txt.
  • Αλλά στην περίπτωσή μας, αυτό το αρχείο δεν υπάρχει πραγματικά. Επομένως, αυτός ο κωδικός θα οδηγήσει σε σφάλμα κατά την εκτέλεση της εφαρμογής.

Χειρισμός σφαλμάτων στο 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);
        }
    }
}

Τώρα εκτελέστε τον κώδικα μέσα Visual Studio και θα πρέπει να λάβετε την παρακάτω έξοδο.

Παραγωγή:-

Χειρισμός σφαλμάτων στο ASP.NET

Η παραπάνω σελίδα δείχνει ότι προέκυψε σφάλμα στην εφαρμογή. Ως αποτέλεσμα, εμφανίζεται στον χρήστη η σελίδα ErrorPage.html.

ASP.NET Unhandled Exception

Ακόμα και στα καλύτερα σενάρια, μπορεί να υπάρξουν περιπτώσεις σφαλμάτων που απλώς δεν προβλέπονται. Ας υποθέσουμε ότι ένας χρήστης περιηγείται σε λάθος σελίδα στην εφαρμογή. Αυτό είναι κάτι που δεν μπορεί να προβλεφθεί. Σε τέτοιες περιπτώσεις, το ASP.NET μπορεί να ανακατευθύνει τον χρήστη στο αρχείο ErrorPage.html.

Ας δούμε ένα παράδειγμα αυτού.

  • Θα χρησιμοποιήσουμε την ίδια εφαρμογή επίδειξης που έχει το αρχείο ErrorPage.html.
  • Και θα προσπαθήσουμε να προβάλουμε μια ιστοσελίδα που δεν υπάρχει στην εφαρμογή μας.
  • Σε αυτήν την περίπτωση, θα πρέπει να ανακατευθυνθούμε στη σελίδα ErrorPage.html. Ας δούμε τα βήματα για να το πετύχουμε αυτό.

Βήμα 1) Ας εργαστούμε πάνω στην εφαρμογή επίδειξης (DemoApplication). Ανοίξτε το αρχείο Global.asax.cs από την Εξερεύνηση λύσεων.

ASP.NET Unhandled Exception

Σημείωση: Το αρχείο Global.asax.cs χρησιμοποιείται για την προσθήκη κώδικα που θα εφαρμόζεται σε όλες τις σελίδες της εφαρμογής.

Βήμα 2) Προσθέστε την παρακάτω γραμμή κώδικα στο Global.asax.cs. Αυτές οι γραμμές θα χρησιμοποιηθούν για τον έλεγχο σφαλμάτων και την αντίστοιχη εμφάνιση της σελίδας ErrorPage.html.

ASP.NET Unhandled Exception

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 Εξήγηση:-

  1. Η πρώτη γραμμή είναι ο χειριστής συμβάντων Application_Error. Αυτό το συμβάν καλείται κάθε φορά που παρουσιάζεται σφάλμα σε μια εφαρμογή. Σημειώστε ότι το όνομα του συμβάντος πρέπει να είναι Application_Error και οι παράμετροι πρέπει να είναι όπως φαίνονται παραπάνω.
  2. Στη συνέχεια, ορίζουμε ένα αντικείμενο της κλάσης τύπου HttpException. Αυτό είναι ένα τυπικό αντικείμενο που θα περιέχει όλες τις λεπτομέρειες του σφάλματος. Στη συνέχεια χρησιμοποιούμε τη μέθοδο Server.GetLastError για να λάβουμε όλες τις λεπτομέρειες του τελευταίου σφάλματος που παρουσιάστηκε στην εφαρμογή.
  3. Στη συνέχεια, ελέγχουμε αν ο κωδικός σφάλματος του τελευταίου σφάλματος είναι 404 (ο κωδικός σφάλματος 404 είναι ο τυπικός κωδικός που επιστρέφεται όταν ένας χρήστης περιηγείται σε μια σελίδα που δεν βρίσκεται). Στη συνέχεια, μεταφέρουμε τον χρήστη στη σελίδα ErrorPage.html, εάν ο κωδικός σφάλματος ταιριάζει.

Τώρα εκτελέστε τον κώδικα στο Visual Studio και θα πρέπει να λάβετε το παρακάτω αποτέλεσμα.

Παραγωγή:-

Περιηγηθείτε στη σελίδα http://localhost:53003/Demo1.aspx. Να θυμάστε ότι το Demo1.aspx δεν υπάρχει στην εφαρμογή μας. Στη συνέχεια θα λάβετε την παρακάτω έξοδο.

Μη χειριζόμενη εξαίρεση στο ASP.NET

Η παραπάνω σελίδα δείχνει ότι προέκυψε σφάλμα στην εφαρμογή. Ως αποτέλεσμα, εμφανίζεται στον χρήστη η σελίδα ErrorPage.html.

Καταγραφή σφαλμάτων ASP.NET

Καταγράφοντας σφάλματα εφαρμογής, βοηθά τον προγραμματιστή να εντοπίσει σφάλματα και να τα επιλύσει αργότερα. Το ASP.NET έχει τη δυνατότητα να καταγράφει σφάλματα. Αυτό γίνεται στο αρχείο Global.asax.cs όταν καταγράφεται το σφάλμα. Κατά τη διάρκεια της διαδικασίας καταγραφής, το μήνυμα σφάλματος μπορεί να εγγραφεί σε ένα αρχείο καταγραφής.

Ας δούμε ένα παράδειγμα αυτού.

  • Θα χρησιμοποιήσουμε την ίδια εφαρμογή επίδειξης που έχει το αρχείο ErrorPage.html.
  • Και θα προσπαθήσουμε να προβάλουμε μια ιστοσελίδα που δεν υπάρχει στην εφαρμογή μας.
  • Σε αυτήν την περίπτωση, θα πρέπει να ανακατευθυνθούμε στη σελίδα μας ErrorPage.html.
  • Και ταυτόχρονα, θα γράψουμε το μήνυμα σφάλματος σε ένα αρχείο καταγραφής. Ας δούμε τα βήματα για να το πετύχουμε αυτό.

Βήμα 1) Ας εργαστούμε πάνω στην εφαρμογή επίδειξης (DemoApplication). Ανοίξτε το αρχείο Global.asax.cs από την Εξερεύνηση λύσεων.

ASP.NET Σφάλμα καταγραφής

Βήμα 2) Προσθέστε την παρακάτω γραμμή κώδικα στο Global.asax.cs. Θα ελέγξει για σφάλματα και θα εμφανίσει ανάλογα τη σελίδα ErrorPage.html. Επίσης, ταυτόχρονα, θα καταγράψουμε τις λεπτομέρειες του σφάλματος σε ένα αρχείο που ονομάζεται AllErrors.txt. Για το παράδειγμά μας, θα γράψουμε κώδικα για να δημιουργηθεί αυτό το αρχείο στη μονάδα δίσκου D.

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 Εξήγηση:-

  1. Η πρώτη γραμμή είναι για να λάβετε το ίδιο το σφάλμα χρησιμοποιώντας τη μέθοδο Server.GetLastError. Αυτό στη συνέχεια αντιστοιχίζεται στη μεταβλητή exc.
  2. Στη συνέχεια, δημιουργούμε μια κενή μεταβλητή συμβολοσειράς που ονομάζεται str. Λαμβάνουμε το πραγματικό μήνυμα σφάλματος χρησιμοποιώντας την ιδιότητα exc.Message. Η ιδιότητα exc.Message θα έχει το ακριβές μήνυμα για οποιοδήποτε σφάλμα που προκύπτει κατά την εκτέλεση της εφαρμογής. Αυτό στη συνέχεια αντιστοιχίζεται στη μεταβλητή συμβολοσειράς.
  3. Στη συνέχεια, ορίζουμε το αρχείο με το όνομα AllErrors.txt. Εδώ θα αποστέλλονται όλα τα μηνύματα σφάλματος. Γράφουμε τη συμβολοσειρά str που περιέχει όλα τα μηνύματα σφάλματος σε αυτό το αρχείο.
  4. Τέλος, μεταφέρουμε τον χρήστη στο αρχείο ErrorPage.html.

Παραγωγή:-

Περιηγηθείτε στη σελίδα http://localhost:53003/Demo1.aspx. Να θυμάστε ότι το Demo1.aspx δεν υπάρχει στην εφαρμογή μας. Στη συνέχεια θα λάβετε την παρακάτω έξοδο.

ASP.NET Σφάλμα καταγραφής

Και ταυτόχρονα, αν ανοίξετε το αρχείο AllErrors.txt, θα δείτε τις παρακάτω πληροφορίες.

ASP.NET Σφάλμα καταγραφής

Το μήνυμα σφάλματος μπορεί στη συνέχεια να μεταβιβαστεί στον προγραμματιστή σε μεταγενέστερο χρονικό σημείο για σκοπούς εντοπισμού σφαλμάτων.

Συχνές Ερωτήσεις

Ναι. Τα εργαλεία τεχνητής νοημοσύνης, όπως το GitHub Copilot, μπορούν να προτείνουν σημεία διακοπής, να εξηγήσουν μια εξαίρεση και να προτείνουν διορθώσεις για κώδικα ASP.NET. RevΔείτε κάθε πρόταση και αναπαράγετε το σφάλμα μόνοι σας, καθώς η Τεχνητή Νοημοσύνη μπορεί να ερμηνεύσει εσφαλμένα την κατάσταση μιας συγκεκριμένης εφαρμογής.

Ναι. Δυνατότητες μηχανικής μάθησης σε εργαλεία όπως Azure Το Application Insights μπορεί να επισημαίνει αυτόματα ασυνήθιστες αιχμές σε εξαιρέσεις ή αργά αιτήματα. Αυτό βοηθά τις ομάδες να εντοπίζουν προβλήματα παραγωγής πιο γρήγορα από τη σάρωση ακατέργαστων αρχείων καταγραφής με το χέρι.

Όχι. Η έξοδος από τη λειτουργία customErrors απενεργοποιεί την έκθεση της στοίβας tracευαίσθητες λεπτομέρειες σε κάθε επισκέπτη, κάτι που αποτελεί κίνδυνο για την ασφάλεια. Χρησιμοποιήστε τη λειτουργία RemoteOnly ή On στην παραγωγή, ώστε μόνο οι τοπικοί προγραμματιστές να βλέπουν όλες τις λεπτομέρειες του σφάλματος.

Το RemoteOnly εμφανίζει λεπτομερείς σελίδες σφάλματος μόνο στα προγράμματα περιήγησης στον τοπικό διακομιστή, ενώ οι απομακρυσμένοι χρήστες αποστέλλονται στη σελίδα προεπιλεγμένης ανακατεύθυνσης. Είναι μια ασφαλής λύση για τον εντοπισμό σφαλμάτων σε έναν ενεργό ιστότοπο χωρίς διαρροή πληροφοριών.

Ορίστε την τιμή debug=”false” στο στοιχείο μεταγλώττισης του web.config. Η λειτουργία εντοπισμού σφαλμάτων απενεργοποιεί τις βελτιστοποιήσεις, διατηρεί τα χρονικά όρια μεγάλα και αυξάνει τη χρήση μνήμης, επομένως οι τοποθεσίες παραγωγής θα πρέπει πάντα να αποστέλλονται με αυτήν απενεργοποιημένη στο Visual Studio.

Όχι. Ένα ανοιχτό tracΤο e.axd μπορεί να αποκαλύψει κεφαλίδες, συνεδρία και μεταβλητές διακομιστή σε εισβολείς. Ορίστε το localOnly=”true” ή απενεργοποιήστε το. tracπλήρως πριν από την ανάπτυξη, ώστε tracΤα ηλεκτρονικά δεδομένα δεν εκτίθενται ποτέ σε απομακρυσμένους χρήστες.

Το Server.Transfer προωθεί το αίτημα στη σελίδα σφάλματος στον διακομιστή χωρίς να αλλάξει το πρόγραμμα περιήγησης. URL ή κάνοντας ένα ταξίδι μετ' επιστροφής. Το Response.Redirect στέλνει ένα νέο αίτημα στο πρόγραμμα περιήγησης, ενημερώνοντας το URL στη σελίδα σφάλματος.

Καταγραφή του μηνύματος εξαίρεσης, στοίβα tracε, ζητήθηκε URL, χρονική σήμανση και περιβάλλον χρήστη. Αυτές οι λεπτομέρειες επιτρέπουν στους προγραμματιστές να αναπαράγουν την αποτυχία αργότερα. Το Server.GetLastError στο Application_Error εκθέτει την εξαίρεση, ώστε να μπορείτε να την εγγράψετε σε ένα αρχείο ή βάση δεδομένων.

Συνοψίστε αυτήν την ανάρτηση με: