日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

asp 判断数组等于_如何在 ASP.NET Core MVC 中处理 404 错误

發(fā)布時間:2023/12/10 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp 判断数组等于_如何在 ASP.NET Core MVC 中处理 404 错误 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

譯文鏈接:https://www.infoworld.com/article/3545304/how-to-handle-404-errors-in-aspnet-core-mvc.html

http://asp.net core mvc 對應(yīng)著 .NET Framework 中的 http://ASP.NET MVC, 前者可以跨平臺,可擴(kuò)展,高性能,不過令人驚訝的是,雖然 http://ASP.NET Core 提供了大量的可選項可以完美的處理 404 錯誤,但 http://ASP.NET Core MVC 在默認(rèn)情況下并沒有選擇它們,你說奇怪不?

這就造成了當(dāng)請求一個不存在的頁面時,應(yīng)用程序?qū)祷匾粋€ 404 錯誤,http://ASP.NET Core MVC 目前會展示一個瀏覽器通用的錯誤頁,如下圖所示:

這篇文章我準(zhǔn)備討論 3種 方式來優(yōu)雅的處理這種 404 錯誤。

接下來我會在 Visual Studio 2019 中創(chuàng)建一個 http://ASP.NET Core MVC 項目,用這個項目去展示如何處理 404 錯誤。

然后把 http://ASP.NET Core MVC 項目跑起來,你會看到應(yīng)用程序默認(rèn)的首頁,上面還帶一行 welcome 的歡迎語 ,如下圖所示:

接下來我們嘗試在瀏覽器中輸入一個不存在的網(wǎng)址,比如說:http://localhost:6440/welcome, 這時候 ASP.NET Core MVC 引擎將會訪問這個地址的資源,可想而知,引擎肯定會返回一個 404 錯誤,你也會看到如下錯誤頁,通常情況下這是非常讓人難堪的,對吧。

檢查 http://ASP.NET Core MVC 的 Response.StatusCode

有幾種方式可以比較完美的處理這種默認(rèn)的 404 錯誤,一個簡單的方案就是去檢查 response 的 http 狀態(tài)碼,一旦發(fā)現(xiàn)這個 status = 404,你可以重定向到一個web 中存在的頁面或者一個特定的錯誤頁,下面的代碼展示了,你可以在 Startup.Configure 方法中進(jìn)行全局判斷,一旦發(fā)現(xiàn)404錯誤就導(dǎo)向 home 頁面。

public class Startup{public void Configure(IApplicationBuilder app, IWebHostEnvironment env){app.Use(async (context, next) =>{await next();if (context.Response.StatusCode == 404){context.Request.Path = "/Home";await next();}});}}

接下來運行web程序,然后鍵入 http://localhost:6440/welcome,你會發(fā)現(xiàn)最終展示了 home 頁面。

下面是 Configure 方法的完整代碼。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Home/Error");}app.Use(async (context, next) =>{await next();if (context.Response.StatusCode == 404){context.Request.Path = "/Home";await next();}});app.UseStaticFiles();app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");});}

使用 UseStatusCodePages 中間件

第二種可選的解決方案是,采用 http://ASP.NET Core 中內(nèi)置的 UseStatusCodePages 中間件,下面的代碼展示了如何在 Startup.Configure 方法中去實現(xiàn) StatusCodePages 。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){app.UseStatusCodePages();//Other code}

現(xiàn)在你可以把程序跑起來然后瀏覽一下這個不存在的資源,下圖展示了這種情況下的輸出結(jié)果:

使用 UseStatusCodePagesWithReExecute 中間件

你可以利用 UseStatusCodePagesWithReExecute 中間件來處理 那種 Response 還沒開始構(gòu)建 就遇到的一些不成功的狀態(tài),有點繞哈,因此這個中間件不會處理 Response status 等于 404 的情況,當(dāng) 404 發(fā)生的時候,這個中間件要做的就是將 request 重定向到另外一個 Action 去處理這個錯誤。

下面的代碼展示了如何使用這個中間件將 request 重定向到另外一個 action 方法。

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

然后再來看一下被重定向的 Action 方法。

[Route("/Home/HandleError/{code:int}")] public IActionResult HandleError(int code) {ViewData["ErrorMessage"] = $"Error occurred. The ErrorCode is: {code}";return View("~/Views/Shared/HandleError.cshtml"); }

現(xiàn)在我把展示錯誤信息的 HandleError 視圖的創(chuàng)建留給你去實現(xiàn)吧!

最后,你可能想為一些錯誤碼創(chuàng)建一些特定的view,比如說,你可以創(chuàng)建 Home/Error/500.cshtml 或者 Home/Error/404.cshtml 視圖,然后根據(jù) http status code 的值重定向到合適的錯誤頁。

另外一種處理 404 錯誤的方式是使用一個自定義的頁面,然后在頁面上設(shè)置一些特定的錯誤代碼,這樣也方便隱藏一些比較重要的信息,比如將 404 改成 服務(wù)壓力大,請聯(lián)系管理員 等等,一旦應(yīng)用程序發(fā)生錯誤,你可以將用戶導(dǎo)向你設(shè)置的錯誤頁,然后展示你設(shè)置的錯誤信息。

更多高質(zhì)量干貨:參見我的 GitHub: dotnetfly

總結(jié)

以上是生活随笔為你收集整理的asp 判断数组等于_如何在 ASP.NET Core MVC 中处理 404 错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。