Programovanie

Ako spracovať chyby 404 v ASP.NET Core MVC

ASP.NET Core MVC je obdobou .NET Core v rámci ASP.NET MVC na vytváranie multiplatformových, škálovateľných a výkonných webových aplikácií a rozhraní API pomocou návrhového vzoru Model-View-Controller. Prekvapivo, hoci ASP.NET Core poskytuje veľa možností na elegantné spracovanie chýb 404, runtime ASP.NET Core MVC ich predvolene nevyužíva.

Výsledkom je, že keď sa nenájde webová stránka a aplikácia vráti chybu 404, ASP.NET Core MVC predstavuje iba všeobecnú chybovú stránku prehľadávača (ako je znázornené na obrázku 1 nižšie). Tento článok pojednáva o troch možnostiach v ASP.NET Core, ktoré môžeme použiť na elegantnejšie spracovanie chýb 404.

Ak chcete pracovať s príkladmi kódu uvedenými v tomto článku, mali by ste mať vo svojom systéme nainštalovanú aplikáciu Visual Studio 2019. Ak ešte nemáte kópiu, môžete si tu stiahnuť Visual Studio 2019.

Vytvorte projekt ASP.NET Core MVC

Najprv si vytvoríme projekt ASP.NET Core v Visual Studio. Za predpokladu, že je vo vašom systéme nainštalované Visual Studio 2019, postupujte podľa krokov uvedených nižšie a vytvorte nový projekt ASP.NET Core v Visual Studio.

  1. Spustite Visual Studio IDE.
  2. Kliknite na „Vytvoriť nový projekt“.
  3. V okne „Vytvoriť nový projekt“ vyberte zo zobrazeného zoznamu šablón „Webová aplikácia ASP.NET Core“.
  4. Kliknite na Ďalej.
  5. V nasledujúcom okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
  6. Kliknite na tlačidlo Vytvoriť.
  7. V okne „Vytvorenie novej webovej aplikácie ASP.NET Core“ vyberte z rozbaľovacieho zoznamu v hornej časti .NET Core ako runtime a ASP.NET Core 3.1 (alebo novší).
  8. Vyberte „Webová aplikácia (Model-View-Controller)“ ako šablónu projektu na vytvorenie novej aplikácie ASP.NET Core MVC.
  9. Skontrolujte, či nie sú začiarknuté políčka „Povoliť podporu Docker“ a „Konfigurovať pre HTTPS“, pretože tu nebudeme tieto funkcie používať.
  10. Skontrolujte, či je overenie nastavené na „Bez overenia“, pretože tiež nebudeme používať overenie.
  11. Kliknite na tlačidlo Vytvoriť.

Nasledovaním týchto krokov vytvoríte nový projekt ASP.NET Core MVC v Visual Studio 2019. Tento projekt použijeme na ilustráciu našich možností spracovania chýb 404 v ďalších častiach tohto článku.

Keď spustíte projekt ASP.NET Core MVC, ktorý sme vytvorili v predchádzajúcej časti, zobrazí sa domovská stránka aplikácie spolu s uvítacou správou, ako je to znázornené na obrázku 1 nižšie.

Teraz sa pokúsime prehliadnuť neexistujúcu webovú stránku. Počas vykonávania aplikácie zadajte do panela s adresou prehliadača // localhost: 6440 / welcome. Keď sa stroju ASP.NET Core MVC nepodarí vyhľadať prostriedok pre zadanú adresu URL, vráti sa chyba 404 a zobrazí sa vám nasledujúca chybová stránka. To nie je veľmi elegantné, však?

Skontrolujte Response.StatusCode v ASP.NET Core MVC

Existuje niekoľko spôsobov, ako môžete vylepšiť túto stránku s všeobecnou chybou. Jednoduchým riešením je skontrolovať stavový kód HTTP 404 v odpovedi. Ak sa nájde, môžete ovládací prvok presmerovať na stránku, ktorá existuje. Nasledujúci úryvok kódu ilustruje, ako môžete v metóde Configure triedy Startup napísať potrebný kód na presmerovanie na domovskú stránku, ak sa vyskytla chyba 404.

 app.Use (async (kontext, ďalšie) =>

    {

čakať na next ();

if (context.Response.StatusCode == 404)

        {

context.Request.Path = "/ Domov";

čakať na next ();

        }

    });

Ak teraz aplikáciu spustíte a pokúsite sa prehľadať adresu URL // localhost: 6440 / welcome, budete presmerovaní na domovskú stránku aplikácie.

Celý kód metódy Configure je uvedený nižšie pre vašu informáciu.

public void Configure (aplikácia IApplicationBuilder, IWebHostEnvironment env)

        {

if (env.IsDevelopment ())

            {

app.UseDeveloperExceptionPage ();

            }

inak

            {

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

            }

app.Use (async (kontext, ďalšie) =>

            {

čakať na next ();

if (context.Response.StatusCode == 404)

                {

context.Request.Path = "/ Domov";

čakať na next ();

                }

            });

app.UseStaticFiles ();

app.UseRouting ();

app.UseAuthorization ();

app.UseEndpoints (endpoints =>

            {

endpoints.MapControllerRoute (

názov: "predvolené",

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

            });

        }

Použite middleware UseStatusCodePages v ASP.NET Core MVC

Druhým riešením na spracovanie chýb 404 v ASP.NET Core je použitie vstavaného middlewaru UseStatusCodePages. Nasledujúci úryvok kódu ukazuje, ako môžete implementovať StatusCodePages v metóde Configure triedy Startup.

public void Configure (aplikácia IApplicationBuilder, IWebHostEnvironment env)

        {

app.UseStatusCodePages ();

// Iný kód

        }

Teraz, keď spustíte aplikáciu a prechádzate na neexistujúci zdroj, bude výstup podobný obrázku 3.

Použite UseStatusCodePagesWithReExecute middleware v ASP.NET Core MVC

Middleware UseStatusCodePagesWithReExecute môžete využiť na spracovanie stavových kódov neúspechu v prípadoch, keď nebol spustený proces generovania odpovede. Preto tento middleware nebude spracovávať chyby stavových kódov HTTP 404 - skôr, keď dôjde k chybe 404, ovládací prvok sa odovzdá inej akcii radiča, ktorá chybu vyrieši.

Nasledujúci úryvok kódu ilustruje, ako môžete tento middleware použiť na presmerovanie na inú metódu akcie.

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

Takto by vyzerala metóda akcie.

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

public IActionResult HandleError (int kód)

{

ViewData ["ErrorMessage"] = $ "Vyskytla sa chyba. Kód chyby je: {code}";

návrat Zobraziť ("~ / Views / Shared / HandleError.cshtml");

}

Nechám na vás, aby ste vytvorili zobrazenie HandleError na zobrazenie chybovej správy.

Nakoniec možno budete chcieť vytvoriť zobrazenia špeciálne pre chybový kód. Môžete napríklad vytvoriť zobrazenia ako Domov / Chyba / 500.cshtml alebo Domov / Chyba / 404.cshtml. Potom by ste mohli skontrolovať chybový kód HTTP a presmerovať ho na príslušnú chybovú stránku.

Ďalším spôsobom spracovania chýb, ktoré sa nenašli na stránke, je použitie vlastného zobrazenia a príslušné nastavenie chybového kódu. Ak sa vo vašej aplikácii vyskytne chyba, môžete používateľa presmerovať na príslušnú chybovú stránku a zobraziť vlastnú chybovú správu s popisom chyby.

Ako urobiť viac v ASP.NET Core:

  • Ako používať vkladanie závislostí do filtrov akcií v ASP.NET Core 3.1
  • Ako používať vzor možností v ASP.NET Core
  • Ako používať smerovanie koncového bodu v ASP.NET Core 3.0 MVC
  • Ako exportovať údaje do programu Excel v ASP.NET Core 3.0
  • Ako používať LoggerMessage v ASP.NET Core 3.0
  • Ako posielať e-maily v ASP.NET Core
  • Ako prihlásiť údaje na server SQL Server v ASP.NET Core
  • Ako plánovať úlohy pomocou Quartz.NET v ASP.NET Core
  • Ako vrátiť dáta z webového rozhrania ASP.NET Core Web API
  • Ako formátovať údaje odpovedí v ASP.NET Core
  • Ako konzumovať webové rozhranie API ASP.NET Core pomocou nástroja RestSharp
  • Ako vykonávať asynchronné operácie pomocou nástroja Dapper
  • Ako používať príznaky funkcií v ASP.NET Core
  • Ako používať atribút FromServices v ASP.NET Core
  • Ako pracovať s cookies v ASP.NET Core
  • Ako pracovať so statickými súbormi v ASP.NET Core
  • Ako používať middleware na prepisovanie adries URL v ASP.NET Core
  • Ako implementovať obmedzenie rýchlosti v ASP.NET Core
  • Ako používať Azure Application Insights v ASP.NET Core
  • Používanie pokročilých funkcií NLog v ASP.NET Core
  • Ako spracovať chyby v webovom rozhraní API ASP.NET
  • Ako implementovať globálne spracovanie výnimiek v ASP.NET Core MVC
  • Ako spracovať nulové hodnoty v ASP.NET Core MVC
  • Pokročilé spravovanie verzií v webovom rozhraní API ASP.NET Core
  • Ako pracovať s pracovnými službami v ASP.NET Core
  • Ako používať rozhranie Data Protection API v ASP.NET Core
  • Ako používať podmienený middleware v ASP.NET Core
  • Ako pracovať so stavom relácie v ASP.NET Core
  • Ako písať efektívne radiče v ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found