中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET Core怎么處理404錯誤

發布時間:2022-04-19 13:47:42 來源:億速云 閱讀:318 作者:iii 欄目:開發技術

這篇文章主要介紹“ASP.NET Core怎么處理404錯誤”,在日常操作中,相信很多人在ASP.NET Core怎么處理404錯誤問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET Core怎么處理404錯誤”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

當未找到網頁并且應用程序返回 404 錯誤時,ASP.NET Core MVC 僅呈現通用瀏覽器錯誤頁面,如下圖所示

ASP.NET Core怎么處理404錯誤

這不是很優雅,是嗎?我們平時看到的404頁面一般是這樣的

ASP.NET Core怎么處理404錯誤

還有這樣的

ASP.NET Core怎么處理404錯誤

試了下京東,地址不存在的時候是會重定向到首頁

下面就來演示下ASP.NET Core中如何實現這種自定義的404頁面處理。

新建項目 ASP.NET Core MVC(WebApi處理方式也一樣)

ASP.NET Core怎么處理404錯誤

新建好的項目直接運行的效果

ASP.NET Core怎么處理404錯誤

隨便輸入一個地址 /test404

當未找到網頁并且應用程序返回 404 錯誤時,ASP.NET Core MVC 僅呈現通用瀏覽器錯誤頁面,如下圖所示

ASP.NET Core怎么處理404錯誤

方式一

FallbackEndpointRouteBuilderExtensions.MapFallback

這是個什么東西?

ASP.NET Core怎么處理404錯誤

意思大概是說這是注冊一個優先級最低的通配路由,來匹配所有路由,那就來試試效果吧。

// Program.cs

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.MapFallback(async (ctx) =>
{
    ctx.Response.Body.Write(Encoding.UTF8.GetBytes("404 from Fallback"));
});

app.Run();

試試效果如下

ASP.NET Core怎么處理404錯誤

方式二 自定義通配路由

HomeController添加一個Action如下

// HomeController.cs

[Route("{*url}", Order = 9999)]
public IActionResult Page404()
{
    return View();
}

添加對應的View頁面如下

// Page404.cshtml
@{
    ViewData["Title"] = "404";
}

<div>404 for {*url}</div>

ASP.NET Core怎么處理404錯誤

上面兩種方式雖然能夠正常處理404錯誤頁,但是在程序內部拋出的404錯誤卻無法進行攔截

添加一個測試Action如下

[Route("/test404")]
public IActionResult test404()
{
    // 一些業務處理,最終返回404 
    // return NotFound();
    return StatusCode(404);
}

你看,這種404場景,上述方式沒能進行攔截處理。

ASP.NET Core怎么處理404錯誤

方式三

自定義Middleware攔截

代碼如下,關于Middleware如何使用這里不做介紹

app.Use((context, next) =>
{
    var res = next(context);
    if (context.Response.StatusCode == 404)
    {
        context.Response.StatusCode = 200;
        context.Response.Body.Write(Encoding.UTF8.GetBytes("404 from Middleware"));
    }

    return res;
});

把方式一和方式二的代碼注釋掉,運行測試效果如下
不存在的地址

ASP.NET Core怎么處理404錯誤

存在的地址,但是業務上返回404

ASP.NET Core怎么處理404錯誤

方式四

UseStatusCodePagesWithReExecute

注釋上個方法的代碼

ASP.NET Core怎么處理404錯誤

app.UseStatusCodePagesWithReExecute("/error/{0}");
// HomeController.cs
[Route("test401")]
public IActionResult test401()
{
    return StatusCode(401);
}
  public class ErrorController : Controller
  {
      [Route("error/404", Order = 9)]
      public IActionResult Error404()
      {
          ViewBag.code = 404;
          return View();
      }

      [Route("error/{code:int}", Order = 1)]
      public IActionResult Error(int code)
      {
          ViewBag.code = code;
          switch (code)
          {
              case 404:
                  ViewBag.msg = "對不起,請求的資源不存在。";
                  break;
              case 401:
                  ViewBag.msg = "對不起,您無權限訪問此頁面。";
                  break;
              default:
                  ViewBag.msg = "服務異常,請稍后重試!";
                  break;
          }

          return View("Error404");
      }
  }
// Error404.cshtml
@{
}

<div>@ViewBag.code : @ViewBag.msg</div>

測試效果

ASP.NET Core怎么處理404錯誤

ASP.NET Core怎么處理404錯誤

方式五 web.config <customErrors> 節點中配置ASP.NET管道處理404錯誤

這是以前framwork時代的iis配置方式,不推薦使用了,也不進行測試了。

到此,關于“ASP.NET Core怎么處理404錯誤”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁武县| 贵定县| 霞浦县| 洪泽县| 清河县| 寿阳县| 济宁市| 武城县| 佳木斯市| 蒙阴县| 昌黎县| 疏勒县| 长顺县| 西畴县| 五华县| 万安县| 甘肃省| 礼泉县| 应城市| 阿拉尔市| 芒康县| 胶州市| 思茅市| 徐水县| 惠来县| 盐津县| 尼勒克县| 铜鼓县| 友谊县| 绥宁县| 普格县| 安塞县| 会泽县| 武城县| 行唐县| 东城区| 甘肃省| 光山县| 五寨县| 边坝县| 包头市|