Ohjelmointi

Kuinka käsitellä 404 virhettä ASP.NET Core MVC: ssä

ASP.NET Core MVC on ASP.NET MVC -kehyksen .NET Core -vastine rakentaa alustojen välisiä, skaalautuvia, tehokkaita verkkosovelluksia ja sovellusliittymiä käyttämällä Model-View-Controller -mallia. Yllättäen, vaikka ASP.NET Core tarjoaa runsaasti vaihtoehtoja 404-virheiden sulavaan käsittelyyn, ASP.NET Core MVC -ajo ei käytä niitä oletusarvoisesti.

Tämän seurauksena, kun verkkosivua ei löydy ja sovellus palauttaa 404-virheen, ASP.NET Core MVC esittää vain yleisen selainvirhesivun (kuten alla olevassa kuvassa 1 on esitetty). Tässä artikkelissa käsitellään ASP.NET Core -järjestelmän kolmea vaihtoehtoa, joita voimme käyttää 404-virheiden sulauttamiseen.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo ASP.NET Core MVC -projekti

Ensinnäkin, luodaan ASP.NET Core -projekti Visual Studiossa. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.NET Core -projekti Visual Studioon noudattamalla seuraavia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.NET Core Web Application” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä seuraavan projektin nimi ja sijainti uuden Konfiguroi uusi projekti -ikkunassa.
  6. Napsauta Luo.
  7. Valitse Luo uusi ASP.NET-ydinverkkosovellus -ikkunassa .NET Core ajonaikaiseksi ja ASP.NET Core 3.1 (tai uudempi) yläreunan avattavasta luettelosta.
  8. Luo uusi ASP.NET Core MVC -sovellus valitsemalla projektisivuksi ”Web-sovellus (Model-View-Controller)”.
  9. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  10. Varmista, että todennuksen asetuksena on Ei todentamista, koska emme myöskään käytä todennusta.
  11. Napsauta Luo.

Näiden vaiheiden seuraaminen luo uuden ASP.NET Core MVC -projektin Visual Studio 2019: ssä. Tässä projektissa kuvataan 404 virheenkäsittelyvaihtoehtomme tämän artikkelin seuraavissa osissa.

Kun suoritat edellisessä osassa luomamme ASP.NET Core MVC -projektin, näet sovelluksen kotisivun yhdessä tervetuloviestin alla olevan kuvan 1 mukaisesti.

Yritetään nyt selata verkkosivua, jota ei ole olemassa. Voit tehdä tämän kirjoittamalla // localhost: 6440 / welcome selaimesi osoiteriville sovelluksen ollessa käynnissä. Kun ASP.NET Core MVC -moottori ei löydä resurssia määritetylle URL-osoitteelle, palautetaan 404-virhe ja sinulle näytetään seuraava virhesivu. Se ei ole kovin tyylikäs, vai mitä?

Tarkista Response.StatusCode ASP.NET Core MVC: ssä

Tällä yleisellä virhesivulla voit parantaa useita tapoja. Yksinkertainen ratkaisu on tarkistaa HTTP-tilakoodi 404 vastauksesta. Jos se löytyy, voit ohjata ohjauksen olemassa olevalle sivulle. Seuraava koodinpätkä kuvaa, kuinka voit kirjoittaa tarvittavan koodin Käynnistysluokan Määritä-menetelmään ohjaamaan kotisivulle, jos 404-virhe on tapahtunut.

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

    {

odota seuraavaksi ();

jos (konteksti.Vastaus.StatusCode == 404)

        {

context.Request.Path = "/ Koti";

odota seuraavaksi ();

        }

    });

Jos nyt suoritat sovelluksen ja yrität selata URL-osoitetta // localhost: 6440 / welcome, sinut ohjataan sovelluksen kotisivulle.

Määritä-menetelmän täydellinen koodi on annettu alla viitteeksi.

public void Configure (IApplicationBuilder-sovellus, IWebHostEnvironment env)

        {

if (env.IsDevelopment ())

            {

app.UseDeveloperExceptionPage ();

            }

muu

            {

app.UseExceptionHandler ("/ Koti / Virhe");

            }

app.Use (asynkronointi (asiayhteys, seuraava) =>

            {

odota seuraavaksi ();

jos (konteksti.Vastaus.StatusCode == 404)

                {

context.Request.Path = "/ Koti";

odota seuraavaksi ();

                }

            });

app.UseStaticFiles ();

app.UseRouting ();

app.UseAuthorization ();

app.UseEndpoints (päätepisteet =>

            {

päätepisteet.MapControllerRoute (

nimi: "oletus",

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

            });

        }

Käytä UseStatusCodePages-väliohjelmistoa ASP.NET Core MVC: ssä

Toinen ratkaisu 404 virheen käsittelemiseen ASP.NET Core -sovelluksessa on sisäänrakennetun UseStatusCodePages-väliohjelman käyttäminen. Seuraava koodinpätkä näyttää, kuinka voit ottaa StatusCodePagesin käyttöön Käynnistys-luokan Määritä-menetelmässä.

public void Configure (IApplicationBuilder-sovellus, IWebHostEnvironment env)

        {

app.UseStatusCodePages ();

// Muu koodi

        }

Nyt kun suoritat sovelluksen ja selaat olematonta resurssia, tulos on samanlainen kuin kuvassa 3.

Käytä UseStatusCodePagesWithReExecute-väliohjelmistoa ASP.NET Core MVC: ssä

Voit hyödyntää UseStatusCodePagesWithReExecute-väliohjelmistoa käsitelläksesi epäonnistumisen tilakoodeja tapauksissa, joissa vastauksen luomisprosessia ei ole aloitettu. Siksi tämä väliohjelmisto ei käsittele HTTP 404 -tilakoodivirheitä - pikemminkin kun 404-virhe ilmenee, ohjaus siirretään toiselle ohjaimen toiminnolle virheen käsittelemiseksi.

Seuraava koodinpätkä kuvaa, kuinka voit käyttää tätä väliohjelmistoa ohjata toiseen toimintatapaan.

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

Toimintatapa näyttäisi tältä.

[Reitti ("/ Koti / HandleError / {koodi: int}")]

public IActionResult HandleError (int-koodi)

{

ViewData ["ErrorMessage"] = $ "Tapahtui virhe. ErrorCode on: {code}";

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

}

Jätän sinun luoda HandleError-näkymän virhesanoman näyttämiseksi.

Lopuksi, haluat ehkä luoda näkymiä virhekoodille. Voit esimerkiksi luoda näkymiä, kuten Koti / Virhe / 500.cshtml tai Koti / Virhe / 404.cshtml. Tämän jälkeen voit tarkistaa HTTP-virhekoodin ja ohjata sen oikealle virhesivulle.

Vielä yksi tapa käsitellä sivun virheitä on käyttää mukautettua näkymää ja asettaa virhekoodi asianmukaisesti. Kun sovelluksessa tapahtuu virhe, voit ohjata käyttäjän sopivalle virhesivulle ja näyttää virheen kuvaavan mukautetun virhesanoman.

Kuinka tehdä enemmän ASP.NET Core -sovelluksessa:

  • Riippuvuusinjektion käyttäminen ASP.NET Core 3.1 -suodattimissa
  • Asetuskuvion käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää päätepisteiden reititystä ASP.NET Core 3.0 MVC: ssä
  • Tietojen vieminen Exceliin ASP.NET Core 3.0: ssa
  • LoggerMessagen käyttäminen ASP.NET Core 3.0: ssa
  • Kuinka lähettää sähköposteja ASP.NET Core -sovelluksessa
  • Tietojen kirjaaminen SQL Server -palvelimeen ASP.NET Core -sovelluksessa
  • Työn ajoitus Quartz.NET: n avulla ASP.NET Core -sovelluksessa
  • Tietojen palauttaminen ASP.NET Core Web -sovellusliittymästä
  • Kuinka muotoilla vastaustiedot ASP.NET Core -sovelluksessa
  • ASP.NET Core Web -sovellusliittymän kuluttaminen RestSharpin avulla
  • Asynkronointitoimintojen suorittaminen Dapperin avulla
  • Ominaisuuslippujen käyttäminen ASP.NET Core -sovelluksessa
  • FromServices-määritteen käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka toimia evästeiden kanssa ASP.NET Core -sovelluksessa
  • Staattisten tiedostojen käsittely ASP.NET Core -sovelluksessa
  • URL: n uudelleenkirjoittamisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Nopeudenrajoituksen toteuttaminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää Azure Application Insightsia ASP.NET Core -sovelluksessa
  • NLog-lisäominaisuuksien käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käsitellä virheitä ASP.NET Web API: ssa
  • Kuinka toteuttaa maailmanlaajuinen poikkeusten käsittely ASP.NET Core MVC: ssä
  • Kuinka käsitellä nolla-arvoja ASP.NET Core MVC: ssä
  • Edistynyt versiointi ASP.NET Core Web -sovellusliittymässä
  • Kuinka työskennellä työntekijöiden palveluiden kanssa ASP.NET Core -sovelluksessa
  • Tietosuoja-sovellusliittymän käyttö ASP.NET Core -sovelluksessa
  • Ehdollisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Istunnon tilan käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka kirjoittaa tehokkaita ohjaimia ASP.NET Core -sovellukseen
$config[zx-auto] not found$config[zx-overlay] not found