Προγραμματισμός

Πώς να χειριστείτε 404 σφάλματα στο ASP.NET Core MVC

Το ASP.NET Core MVC είναι το αντίστοιχο .NET Core του πλαισίου ASP.NET MVC για τη δημιουργία εφαρμογών διαδικτύου και API πολλαπλών πλατφορμών, με δυνατότητα κλιμάκωσης, υψηλής απόδοσης χρησιμοποιώντας το πρότυπο σχεδίασης Model-View-Controller. Παραδόξως, παρόλο που το ASP.NET Core παρέχει πολλές επιλογές για τον χειρισμό των σφαλμάτων 404 με χαρά, ο χρόνος εκτέλεσης του ASP.NET Core MVC δεν τα εκμεταλλεύεται από προεπιλογή.

Ως αποτέλεσμα, όταν δεν εντοπίζεται μια ιστοσελίδα και επιστρέφεται σφάλμα 404 από την εφαρμογή, το ASP.NET Core MVC παρουσιάζει μόνο μια γενική σελίδα σφάλματος προγράμματος περιήγησης (όπως φαίνεται στην Εικόνα 1 παρακάτω). Αυτό το άρθρο περιγράφει τρεις επιλογές στο ASP.NET Core που μπορούμε να χρησιμοποιήσουμε για να χειριστούμε 404 σφάλματα πιο χαριτωμένα.

Για να εργαστείτε με τα παραδείγματα κώδικα που παρέχονται σε αυτό το άρθρο, θα πρέπει να έχετε εγκαταστήσει το Visual Studio 2019 στο σύστημά σας. Εάν δεν έχετε ήδη αντίγραφο, μπορείτε να κατεβάσετε το Visual Studio 2019 εδώ.

Δημιουργήστε ένα έργο ASP.NET Core MVC

Πρώτα απ 'όλα, ας δημιουργήσουμε ένα έργο ASP.NET Core στο Visual Studio. Ας υποθέσουμε ότι το Visual Studio 2019 είναι εγκατεστημένο στο σύστημά σας, ακολουθήστε τα βήματα που περιγράφονται παρακάτω για να δημιουργήσετε ένα νέο έργο ASP.NET Core στο Visual Studio.

  1. Εκκινήστε το Visual Studio IDE.
  2. Κάντε κλικ στο "Δημιουργία νέου έργου".
  3. Στο παράθυρο "Δημιουργία νέου έργου", επιλέξτε "ASP.NET Core Web Application" από τη λίστα των προτύπων που εμφανίζονται.
  4. Κάντε κλικ στο Επόμενο.
  5. Στο παράθυρο "Διαμόρφωση του νέου έργου" που εμφανίζεται στη συνέχεια, καθορίστε το όνομα και την τοποθεσία για το νέο έργο.
  6. Κάντε κλικ στο Δημιουργία.
  7. Στο παράθυρο "Δημιουργία νέας εφαρμογής Ιστού πυρήνα ASP.NET", επιλέξτε .NET Core ως χρόνο εκτέλεσης και ASP.NET Core 3.1 (ή μεταγενέστερη έκδοση) από την αναπτυσσόμενη λίστα στην κορυφή.
  8. Επιλέξτε "Web Application (Model-View-Controller)" ως πρότυπο έργου για να δημιουργήσετε μια νέα εφαρμογή ASP.NET Core MVC.
  9. Βεβαιωθείτε ότι τα πλαίσια ελέγχου "Ενεργοποίηση υποστήριξης Docker" και "Διαμόρφωση για HTTPS" δεν είναι επιλεγμένα, καθώς δεν θα χρησιμοποιούμε αυτές τις δυνατότητες εδώ.
  10. Βεβαιωθείτε ότι ο Έλεγχος ταυτότητας έχει οριστεί σε "Χωρίς έλεγχο ταυτότητας", καθώς ούτε θα χρησιμοποιούμε έλεγχο ταυτότητας.
  11. Κάντε κλικ στο Δημιουργία.

Ακολουθώντας αυτά τα βήματα θα δημιουργήσει ένα νέο έργο ASP.NET Core MVC στο Visual Studio 2019. Θα χρησιμοποιήσουμε αυτό το έργο για να δείξουμε τις επιλογές χειρισμού σφαλμάτων 404 στις επόμενες ενότητες αυτού του άρθρου.

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

Τώρα ας προσπαθήσουμε να περιηγηθούμε σε μια ιστοσελίδα που δεν υπάρχει. Για να το κάνετε αυτό, πληκτρολογήστε // localhost: 6440 / Welcome στη γραμμή διευθύνσεων του προγράμματος περιήγησής σας κατά την εκτέλεση της εφαρμογής. Όταν ο κινητήρας ASP.NET Core MVC δεν εντοπίσει τον πόρο για την καθορισμένη διεύθυνση URL, θα εμφανιστεί ένα σφάλμα 404 και θα εμφανιστεί η ακόλουθη σελίδα σφάλματος. Αυτό δεν είναι πολύ κομψό, έτσι;

Ελέγξτε το Response.StatusCode στο ASP.NET Core MVC

Υπάρχουν διάφοροι τρόποι με τους οποίους μπορείτε να βελτιώσετε αυτήν τη γενική σελίδα σφάλματος. Μια απλή λύση είναι να ελέγξετε για τον κωδικό κατάστασης HTTP 404 στην απόκριση. Εάν βρεθεί, μπορείτε να ανακατευθύνετε το στοιχείο ελέγχου σε μια σελίδα που υπάρχει. Το ακόλουθο απόσπασμα κώδικα δείχνει πώς μπορείτε να γράψετε τον απαραίτητο κώδικα στη μέθοδο Configure της κλάσης Startup για να ανακατευθύνετε στην αρχική σελίδα εάν έχει προκύψει σφάλμα 404.

 app.Use (async (περιβάλλον, επόμενο) =>

    {

περιμένετε επόμενο ();

εάν (konteks.Response.StatusCode == 404)

        {

konteks.Request.Path = "/ Home";

περιμένετε επόμενο ();

        }

    });

Τώρα, εάν εκτελέσετε την εφαρμογή και προσπαθήσετε να περιηγηθείτε στη διεύθυνση URL // localhost: 6440 / Welcome, θα μεταφερθείτε στην αρχική σελίδα της εφαρμογής.

Ο πλήρης κωδικός της μεθόδου Configure δίνεται παρακάτω για αναφορά σας.

public void Configure (εφαρμογή IApplicationBuilder, IWebHostEnvironment env)

        {

εάν (env.IsDevelopment ())

            {

app.UseDeveloperExceptionPage ();

            }

αλλού

            {

app.UseExceptionHandler ("/ Σπίτι / Σφάλμα");

            }

app.Use (async (περιβάλλον, επόμενο) =>

            {

περιμένετε επόμενο ();

εάν (konteks.Response.StatusCode == 404)

                {

konteks.Request.Path = "/ Home";

περιμένετε επόμενο ();

                }

            });

app.UseStaticFiles ();

app.UseRouting ();

app.UseAuthorization ();

app.UseEndpoints (endpoints =>

            {

endpoints.MapControllerRoute (

όνομα: "προεπιλογή",

μοτίβο: "{controller = Home} / {action = Index} / {id?}");

            });

        }

Χρησιμοποιήστε το ενδιάμεσο λογισμικό UseStatusCodePages στο ASP.NET Core MVC

Μια δεύτερη λύση για τον χειρισμό 404 σφαλμάτων στο ASP.NET Core είναι με τη χρήση του ενσωματωμένου ενδιάμεσου λογισμικού UseStatusCodePages. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να εφαρμόσετε StatusCodePages στη μέθοδο Configure της κλάσης Startup.

public void Configure (εφαρμογή IApplicationBuilder, IWebHostEnvironment env)

        {

app.UseStatusCodePages ();

// Άλλος κωδικός

        }

Τώρα όταν εκτελείτε την εφαρμογή και περιηγείστε στον ανύπαρκτο πόρο, η έξοδος θα είναι παρόμοια με το Σχήμα 3.

Χρησιμοποιήστε το ενδιάμεσο λογισμικό UseStatusCodePagesWithReExecute στο ASP.NET Core MVC

Μπορείτε να επωφεληθείτε από το ενδιάμεσο λογισμικό UseStatusCodePagesWithReExecute για να χειριστείτε κωδικούς κατάστασης που δεν έχουν επιτυχία σε περιπτώσεις όπου η διαδικασία δημιουργίας της απόκρισης δεν έχει ξεκινήσει. Ως εκ τούτου, αυτό το μεσαίο λογισμικό δεν θα χειριστεί σφάλματα κωδικού κατάστασης HTTP 404 - μάλλον, όταν παρουσιαστεί σφάλμα 404, το στοιχείο ελέγχου θα μεταφερθεί σε άλλη ενέργεια ελεγκτή για να χειριστεί το σφάλμα.

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

app.UseStatusCodePagesWithReExecute ("/ Home / HandleError / {0}");

Εδώ θα μοιάζει η μέθοδος δράσης.

[Διαδρομή ("/ Home / HandleError / {code: int}")]

δημόσιο IActionResult HandleError (κωδικός int)

{

ViewData ["ErrorMessage"] = $ "Παρουσιάστηκε σφάλμα. Ο κωδικός σφάλματος είναι: {code}";

Επιστροφή Προβολή ("~ / Views / Shared / HandleError.cshtml");

}

Σας αφήνω να δημιουργήσετε την προβολή HandleError για να εμφανιστεί το μήνυμα σφάλματος.

Τέλος, ίσως θέλετε να δημιουργήσετε προβολές ειδικά για έναν κωδικό σφάλματος. Για παράδειγμα, ενδέχεται να δημιουργήσετε προβολές όπως Αρχική / Σφάλμα / 500.cshtml ή Σπίτι / Σφάλμα / 404.cshtml. Στη συνέχεια, μπορείτε να ελέγξετε τον κωδικό σφάλματος HTTP και να ανακατευθύνετε στην κατάλληλη σελίδα σφάλματος.

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

Πώς να κάνετε περισσότερα στο ASP.NET Core:

  • Πώς να χρησιμοποιήσετε την ένεση εξάρτησης σε φίλτρα δράσης στο ASP.NET Core 3.1
  • Πώς να χρησιμοποιήσετε το μοτίβο επιλογών στο ASP.NET Core
  • Τρόπος χρήσης δρομολόγησης τελικού σημείου στο ASP.NET Core 3.0 MVC
  • Τρόπος εξαγωγής δεδομένων στο Excel στο ASP.NET Core 3.0
  • Πώς να χρησιμοποιήσετε το LoggerMessage στο ASP.NET Core 3.0
  • Πώς να στείλετε email στο ASP.NET Core
  • Τρόπος καταγραφής δεδομένων σε SQL Server στον πυρήνα ASP.NET
  • Πώς να προγραμματίσετε εργασίες χρησιμοποιώντας το Quartz.NET στο ASP.NET Core
  • Πώς να επιστρέψετε δεδομένα από το ASP.NET Core Web API
  • Πώς να μορφοποιήσετε δεδομένα απόκρισης στο ASP.NET Core
  • Πώς να καταναλώσετε ένα ASP.NET Core Web API χρησιμοποιώντας το RestSharp
  • Πώς να εκτελέσετε λειτουργίες ασύγχυσης χρησιμοποιώντας το Dapper
  • Πώς να χρησιμοποιήσετε σημαίες χαρακτηριστικών στο ASP.NET Core
  • Τρόπος χρήσης του χαρακτηριστικού FromServices στο ASP.NET Core
  • Πώς να εργαστείτε με cookie στο ASP.NET Core
  • Πώς να εργαστείτε με στατικά αρχεία στο ASP.NET Core
  • Πώς να χρησιμοποιήσετε το Middle Rewriting URL στο ASP.NET Core
  • Πώς να εφαρμόσετε περιορισμό ρυθμού στο ASP.NET Core
  • Πώς να χρησιμοποιήσετε το Azure Application Insights στο ASP.NET Core
  • Χρήση προηγμένων δυνατοτήτων NLog στο ASP.NET Core
  • Πώς να χειριστείτε σφάλματα στο ASP.NET Web API
  • Πώς να εφαρμόσετε τον παγκόσμιο χειρισμό εξαιρέσεων στο ASP.NET Core MVC
  • Τρόπος χειρισμού μηδενικών τιμών στο ASP.NET Core MVC
  • Προηγμένη έκδοση στο ASP.NET Core Web API
  • Πώς να εργαστείτε με υπηρεσίες εργαζομένων στο ASP.NET Core
  • Τρόπος χρήσης του API προστασίας δεδομένων στο ASP.NET Core
  • Τρόπος χρήσης μεσαίου λογισμικού υπό όρους στο ASP.NET Core
  • Τρόπος εργασίας με την κατάσταση συνεδρίας στον ASP.NET Core
  • Πώς να γράψετε αποτελεσματικούς ελεγκτές στο ASP.NET Core