Programmēšana

Kā rīkoties ar 404 kļūdām ASP.NET Core MVC

ASP.NET Core MVC ir ASP.NET MVC ietvara .NET Core partneris, lai izveidotu starpplatformas, mērogojamas, augstas veiktspējas tīmekļa lietojumprogrammas un API, izmantojot Model-View-Controller dizaina modeli. Pārsteidzoši, lai arī ASP.NET Core nodrošina daudz iespēju 404 kļūdu graciozai apstrādei, ASP.NET Core MVC izpildlaiks tās pēc noklusējuma neizmanto.

Rezultātā, ja tīmekļa lapa netiek atrasta un 404 kļūda tiek atgriezta lietojumprogrammā, ASP.NET Core MVC parāda tikai vispārīgu pārlūka kļūdu lapu (kā parādīts 1. attēlā zemāk). Šajā rakstā ir aplūkotas trīs ASP.NET Core iespējas, kuras mēs varam izmantot, lai graciozāk apstrādātu 404 kļūdas.

Lai strādātu ar šajā rakstā sniegtajiem kodu piemēriem, sistēmā jābūt instalētai Visual Studio 2019. Ja jums vēl nav kopijas, varat lejupielādēt Visual Studio 2019 šeit.

Izveidojiet ASP.NET Core MVC projektu

Vispirms izveidosim ASP.NET Core projektu Visual Studio. Pieņemot, ka Visual Studio 2019 ir instalēta jūsu sistēmā, veiciet tālāk norādītās darbības, lai izveidotu jaunu ASP.NET Core projektu Visual Studio.

  1. Palaidiet Visual Studio IDE.
  2. Noklikšķiniet uz “Izveidot jaunu projektu”.
  3. Logā “Izveidot jaunu projektu” parādīto veidņu sarakstā atlasiet “ASP.NET Core Web Application”.
  4. Noklikšķiniet uz Tālāk.
  5. Nākamajā logā “Konfigurēt jauno projektu” norādiet jaunā projekta nosaukumu un vietu.
  6. Noklikšķiniet uz Izveidot.
  7. Logā “Izveidot jaunu ASP.NET Core Web lietojumprogrammu” augšdaļā esošajā nolaižamajā sarakstā atlasiet .NET Core kā izpildlaiku un ASP.NET Core 3.1 (vai jaunāku).
  8. Atlasiet “Web Application (Model-View-Controller)” kā projekta veidni, lai izveidotu jaunu ASP.NET Core MVC lietojumprogrammu.
  9. Pārliecinieties, vai nav atzīmētas izvēles rūtiņas “Iespējot Docker atbalstu” un “Konfigurēt HTTPS”, jo mēs šeit neizmantosim šīs funkcijas.
  10. Pārliecinieties, vai autentifikācijai ir iestatīta vērtība “Nav autentifikācijas”, jo mēs arī neizmantosim autentifikāciju.
  11. Noklikšķiniet uz Izveidot.

Veicot šīs darbības, Visual Studio 2019 tiks izveidots jauns ASP.NET Core MVC projekts. Mēs izmantosim šo projektu, lai ilustrētu mūsu 404 kļūdu apstrādes iespējas šī raksta nākamajās sadaļās.

Izpildot ASP.NET Core MVC projektu, kuru esam izveidojuši iepriekšējā sadaļā, jūs redzēsiet lietojumprogrammas sākumlapu kopā ar sveiciena ziņojumu, kā parādīts 1. attēlā.

Tagad mēģināsim pārlūkot Web lapu, kas nepastāv. Lai to izdarītu, pārlūka adreses joslā ierakstiet // localhost: 6440 / welcome, kamēr programma tiek izpildīta. Kad ASP.NET Core MVC dzinējs nespēj atrast resursu norādītajam URL, tiks atgriezta kļūda 404, un jums tiks parādīta šāda kļūdas lapa. Tas nav ļoti eleganti, vai ne?

Pārbaudiet Response.StatusCode ASP.NET Core MVC

Ir vairāki veidi, kā jūs varat uzlabot šo vispārīgo kļūdu lapu. Vienkāršs risinājums ir pārbaudīt atbildē HTTP statusa kodu 404. Ja tiek atrasts, varat novirzīt vadību uz esošo lapu. Šis koda fragments parāda, kā startēšanas klases konfigurēšanas metodē var ierakstīt nepieciešamo kodu, lai novirzītu uz sākumlapu, ja ir notikusi kļūda 404.

 lietotne. Izmantojiet (async (context, next) =>

    {

gaidīt nākamo ();

ja (konteksts.atbilde.StatusCode == 404)

        {

context.Request.Path = "/ Sākums";

gaidīt nākamo ();

        }

    });

Tagad, ja izpildāt lietojumprogrammu un mēģināt pārlūkot URL // localhost: 6440 / welcome, jūs tiksiet novirzīts uz lietojumprogrammas sākumlapu.

Pilns konfigurēšanas metodes kods ir norādīts zemāk.

public void Configure (lietotne IApplicationBuilder, IWebHostEnvironment env)

        {

ja (env.IsDevelopment ())

            {

app.UseDeveloperExceptionPage ();

            }

cits

            {

app.UseExceptionHandler ("/ Sākums / Kļūda");

            }

lietotne. Izmantojiet (async (context, next) =>

            {

gaidīt nākamo ();

ja (konteksts.atbilde.StatusCode == 404)

                {

context.Request.Path = "/ Sākums";

gaidīt nākamo ();

                }

            });

app.UseStaticFiles ();

app.UseRouting ();

app.UseAuthorization ();

app.UseEndpoints (galapunkti =>

            {

galapunkti. MapControllerRoute (

nosaukums: "noklusējums",

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

            });

        }

ASP.NET Core MVC izmantojiet starpprogrammatūru UseStatusCodePages

Otrais risinājums 404 kļūdu apstrādei ASP.NET Core ir, izmantojot iebūvēto starpprogrammatūru UseStatusCodePages. Šis koda fragments parāda, kā jūs varat ieviest StatusCodePages Startup klases konfigurēšanas metodē.

public void Configure (lietotne IApplicationBuilder, IWebHostEnvironment env)

        {

app.UseStatusCodePages ();

// Cits kods

        }

Tagad, izpildot lietojumprogrammu un pārlūkojot neeksistējošo resursu, izvade būs līdzīga 3. attēlam.

Izmantojiet starpprogrammatūru UseStatusCodePagesWithReExecute ASP.NET Core MVC

Varat izmantot starpprogrammatūras UseStatusCodePagesWithReExecute priekšrocības, lai apstrādātu neveiksmes statusa kodus gadījumos, kad atbildes ģenerēšanas process nav sākts. Tādējādi šī starpprogrammatūra neapstrādās HTTP 404 statusa koda kļūdas - drīzāk, kad rodas 404 kļūda, vadība tiks nodota citai kontroliera darbībai, lai apstrādātu kļūdu.

Šis koda fragments parāda, kā jūs varat izmantot šo starpprogrammatūru, lai novirzītu uz citu darbības metodi.

app.UseStatusCodePagesWithReExecute ("/ Sākums / HandleError / {0}");

Lūk, kā darbības metode varētu izskatīties.

[Maršruts ("/ Sākums / HandleError / {kods: int}")]

public IActionResult HandleError (int kods)

{

ViewData ["ErrorMessage"] = $ "Radās kļūda. ErrorCode ir: {code}";

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

}

Atstāju jums izveidot HandleError skatu, lai parādītu kļūdas ziņojumu.

Visbeidzot, iespējams, vēlēsities izveidot skatus tieši kļūdas kodam. Piemēram, varat izveidot tādus skatus kā Sākums / Kļūda / 500.cshtml vai Sākums / Kļūda / 404.cshtml. Pēc tam jūs varat pārbaudīt HTTP kļūdas kodu un novirzīt uz atbilstošo kļūdas lapu.

Vēl viens veids, kā apstrādāt lapas neatrastās kļūdas, ir pielāgota skata izmantošana un kļūdas koda atbilstoša iestatīšana. Kad jūsu lietojumprogrammā rodas kļūda, varat novirzīt lietotāju uz atbilstošo kļūdas lapu un parādīt pielāgoto kļūdas ziņojumu, kurā aprakstīta kļūda.

Kā paveikt vairāk programmā ASP.NET Core:

  • Kā atkarības injekciju izmantot darbības filtros ASP.NET Core 3.1
  • Kā izmantot opciju modeli ASP.NET Core
  • Kā izmantot galapunkta maršrutēšanu ASP.NET Core 3.0 MVC
  • Kā eksportēt datus uz Excel programmā ASP.NET Core 3.0
  • Kā lietot LoggerMessage ASP.NET Core 3.0
  • Kā nosūtīt e-pastus ASP.NET Core
  • Kā reģistrēt datus SQL Server ASP.NET Core
  • Kā ieplānot darbus, izmantojot Quartz.NET ASP.NET Core
  • Kā atgriezt datus no ASP.NET Core Web API
  • Kā formatēt atbildes datus ASP.NET Core
  • Kā patērēt ASP.NET Core Web API, izmantojot RestSharp
  • Kā veikt asinhronas darbības, izmantojot Dapper
  • Kā izmantot funkciju karodziņus ASP.NET Core
  • Kā izmantot atribūtu FromServices ASP.NET Core
  • Kā strādāt ar sīkdatnēm ASP.NET Core
  • Kā strādāt ar statiskiem failiem ASP.NET Core
  • Kā izmantot URL pārrakstīšanas starpprogrammatūru ASP.NET Core
  • Kā ieviest ātruma ierobežošanu ASP.NET Core
  • Kā izmantot Azure Application Insights ASP.NET Core
  • Papildu NLog funkciju izmantošana ASP.NET Core
  • Kā rīkoties ar kļūdām ASP.NET Web API
  • Kā ieviest globālo izņēmumu apstrādi ASP.NET Core MVC
  • Kā rīkoties ar nulles vērtībām ASP.NET Core MVC
  • Uzlabota versiju veidošana ASP.NET Core Web API
  • Kā strādāt ar darbinieku pakalpojumiem ASP.NET Core
  • Kā izmantot datu aizsardzības API ASP.NET Core
  • Kā izmantot nosacīto starpprogrammatūru ASP.NET Core
  • Kā strādāt ar sesijas stāvokli ASP.NET Core
  • Kā rakstīt efektīvus kontrollerus ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found