Programiranje

Kako obravnavati napake 404 v ASP.NET Core MVC

ASP. Presenetljivo je, da čeprav ASP.NET Core ponuja veliko možnosti za elegantno obdelavo napak 404, jih izvajalno okolje ASP.NET Core MVC privzeto ne izkoristi.

Posledično, ko spletne strani ni mogoče najti in aplikacija vrne napako 404, ASP.NET Core MVC predstavi samo splošno stran z napakami brskalnika (kot je prikazano na sliki 1 spodaj). V tem članku so opisane tri možnosti v ASP.NET Core, s katerimi lahko bolj elegantno obravnavamo napake 404.

Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projekt ASP.NET Core MVC

Najprej ustvarimo projekt ASP.NET Core v Visual Studio. Ob predpostavki, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov projekt ASP.NET Core v Visual Studio.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
  4. Kliknite Naprej.
  5. V naslednjem oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.
  7. V oknu »Ustvari novo spletno aplikacijo ASP.NET Core« izberite .NET Core kot izvajalno okolje in ASP.NET Core 3.1 (ali novejšo) s spustnega seznama na vrhu.
  8. Kot predlogo projekta izberite »Spletna aplikacija (Model-View-Controller)«, da ustvarite novo aplikacijo ASP.NET Core MVC.
  9. Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
  10. Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
  11. Kliknite Ustvari.

Po teh korakih boste v Visual Studio 2019 ustvarili nov projekt ASP.NET Core MVC v projektu. Ta projekt bomo uporabili za ponazoritev 404 možnosti ravnanja z napakami v naslednjih odsekih tega članka.

Ko zaženete projekt ASP.NET Core MVC, ki smo ga ustvarili v prejšnjem razdelku, boste videli domačo stran aplikacije skupaj s pozdravnim sporočilom, kot je prikazano na sliki 1 spodaj.

Zdaj poskusimo brskati po spletni strani, ki ne obstaja. Če želite to narediti, v naslovno vrstico brskalnika med izvajanjem aplikacije vnesite // localhost: 6440 / welcome. Ko mehanizem ASP.NET Core MVC ne najde vira za navedeni URL, se vrne napaka 404 in prikaže se naslednja stran z napako. To ni zelo elegantno, kajne?

Preverite Response.StatusCode v ASP.NET Core MVC

Na tej strani z generičnimi napakami lahko izboljšate več načinov. Preprosta rešitev je, da v odgovoru preverite kodo stanja HTTP 404. Če ga najdete, lahko preusmerite kontrolnik na obstoječo stran. Naslednji delček kode prikazuje, kako lahko v način Konfiguracija razreda zagona napišete potrebno kodo za preusmeritev na domačo stran, če je prišlo do napake 404.

 app.Use (async (context, next) =>

    {

počakajte na naslednji ();

če (context.Response.StatusCode == 404)

        {

context.Request.Path = "/ Domov";

počakajte na naslednji ();

        }

    });

Zdaj, če zaženete aplikacijo in poskusite brskati po URL-ju // localhost: 6440 / welcome, boste preusmerjeni na domačo stran aplikacije.

Popolna koda metode Configure je navedena spodaj za referenco.

javna void Configure (aplikacija IApplicationBuilder, IWebHostEnvironment env)

        {

if (env.IsDevelopment ())

            {

app.UseDeveloperExceptionPage ();

            }

drugače

            {

app.UseExceptionHandler ("/ Domov / Napaka");

            }

app.Use (async (context, next) =>

            {

počakajte na naslednji ();

če (context.Response.StatusCode == 404)

                {

context.Request.Path = "/ Domov";

počakajte na naslednji ();

                }

            });

app.UseStaticFiles ();

app.UseRouting ();

app.UseAuthorization ();

app.UseEndpoints (končne točke =>

            {

endpoints.MapControllerRoute (

ime: "privzeto",

vzorec: "{controller = Home} / {action = Index} / {id?}");

            });

        }

Uporabite vmesno programsko opremo UseStatusCodePages v ASP.NET Core MVC

Druga rešitev za obravnavo napak 404 v ASP.NET Core je uporaba vgrajene vmesne programske opreme UseStatusCodePages. Naslednji delček kode prikazuje, kako lahko implementirate StatusCodePages v metodi Configure razreda Startup.

javna void Configure (aplikacija IApplicationBuilder, IWebHostEnvironment env)

        {

app.UseStatusCodePages ();

// Druga koda

        }

Zdaj, ko zaženete aplikacijo in poiščete neobstoječi vir, bo rezultat podoben sliki 3.

Uporabite UseStatusCodePagesWithReExecute vmesno programsko opremo v ASP.NET Core MVC

Vmesno programsko opremo UseStatusCodePagesWithReExecute lahko izkoristite za obdelavo kod neuspešnega stanja v primerih, ko postopek ustvarjanja odziva ni bil zagnan. Zato ta vmesna programska oprema ne bo obravnavala napak s kodo stanja HTTP 404 - ko pride do napake 404, se nadzor posreduje drugemu dejanju krmilnika za obravnavo napake.

Naslednji delček kode prikazuje, kako lahko to vmesno programsko opremo uporabite za preusmeritev na drug način dejanja.

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

Evo, kako bi izgledala metoda delovanja.

[Route ("/ Home / HandleError / {code: int}")]

javna IActionResult HandleError (int koda)

{

ViewData ["ErrorMessage"] = $ "Prišlo je do napake. Koda napake je: {code}";

return View ("~ / Views / Shared / HandleError.cshtml");

}

Prepuščam vam, da ustvarite pogled HandleError za prikaz sporočila o napaki.

Nazadnje boste morda želeli ustvariti poglede posebej za kodo napake. Na primer, lahko ustvarite poglede, kot so Domov / Napaka / 500.cshtml ali Domov / Napaka / 404.cshtml. Nato lahko preverite kodo napake HTTP in jo preusmerite na ustrezno stran z napako.

Še en način ravnanja z napakami, ki niso najdene, je uporaba pogleda po meri in ustrezna nastavitev kode napake. Ko pride do napake v vaši aplikaciji, lahko uporabnika preusmerite na ustrezno stran z napako in prikažete sporočilo o napaki po meri, ki opisuje napako.

Kako narediti več v ASP.NET Core:

  • Kako uporabiti vbrizgavanje odvisnosti v akcijskih filtrih v ASP.NET Core 3.1
  • Kako uporabiti vzorec možnosti v ASP.NET Core
  • Kako uporabljati usmerjanje končnih točk v ASP.NET Core 3.0 MVC
  • Kako izvoziti podatke v Excel v ASP.NET Core 3.0
  • Kako uporabljati LoggerMessage v ASP.NET Core 3.0
  • Kako poslati e-pošto v ASP.NET Core
  • Kako zapisati podatke v SQL Server v ASP.NET Core
  • Kako razporediti delovna mesta z uporabo Quartz.NET v ASP.NET Core
  • Kako vrniti podatke iz spletnega API-ja ASP.NET Core
  • Kako oblikovati podatke o odzivih v ASP.NET Core
  • Kako porabiti spletni API ASP.NET Core s pomočjo RestSharp
  • Kako izvajati asinhrne operacije z uporabo Dapperja
  • Kako uporabljati zastavice funkcij v ASP.NET Core
  • Kako uporabljati atribut FromServices v ASP.NET Core
  • Kako delati s piškotki v ASP.NET Core
  • Kako delati s statičnimi datotekami v ASP.NET Core
  • Kako uporabiti prepisovanje URL-jev Middleware v ASP.NET Core
  • Kako implementirati omejevanje hitrosti v ASP.NET Core
  • Kako uporabljati Azure Application Insights v ASP.NET Core
  • Uporaba naprednih funkcij NLog v ASP.NET Core
  • Kako ravnati z napakami v spletnem API-ju ASP.NET
  • Kako implementirati globalno obravnavo izjem v ASP.NET Core MVC
  • Kako ravnati z ničelnimi vrednostmi v ASP.NET Core MVC
  • Napredno spreminjanje različic v ASP.NET Core Web API
  • Kako delati s storitvami za delavce v ASP.NET Core
  • Kako uporabljati API za zaščito podatkov v ASP.NET Core
  • Kako uporabljati pogojno vmesno programsko opremo v ASP.NET Core
  • Kako delati s stanjem seje v ASP.NET Core
  • Kako napisati učinkovite krmilnike v ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found