Asp.Net Core MVC自定义404页面

使用Asp.Net Core MVC时,可用使用以下方法自定义404页面
一、使用 app.Use();中间件,在里面判断返回状态,如果是404,你就可以把他重定向到你需要的页面

    app.Use(async (context, next) =>
            {
                await next();
                if (context.Response.StatusCode == 404)
                {
                    context.Request.Path = "/Error.html";
                    await next();
                }
            });

二、使用 app.UseStatusCodePages();中间件,当应用遇到没有正文的 HTTP 400-599 错误状态代码时,它将返回状态代码和空响应正文。
当你直接调用该方法时,响应试例为下面图片。 当然这种方法不太友好,所以通常不在生产中使用。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210301142159203.png
app.UseStatusCodePages()方法重载中有一个接受lambda的方法,当然这样响应字符串与上面方法无差异。

app.UseStatusCodePages(async context =>
    {
        context.HttpContext.Response.ContentType = "text/plain";

        await context.HttpContext.Response.WriteAsync(
            "Status code page, status code: " +
            context.HttpContext.Response.StatusCode);
    });

但是你可以设置ContentType=“text/html”,这样你的返回内容就使用html来解析。

  app.UseStatusCodePages(async context =>
            {
                context.HttpContext.Response.ContentType = "text/html;charset=utf-8";
                
                await context.HttpContext.Response.WriteAsync(
                    @"<!DOCTYPE html>
                        <html>
                        <head>
                            <meta name='viewport' content='width=device-width' />
                            <title>错误页面</title>
                        </head>
                        <body>
                            <div>错误页面</div>
                        </body>
                        </html>
                        ");
            });

三、使用 app.UseStatusCodePagesWithReExecute();中间件,该中间件可用帮你指向控制器。该配置就是把错误页指向了Error控制器中的Error方法,code就是错误http请求状态码,你可以进行其他路由配置。

	app.UseStatusCodePagesWithReExecute("/Error/Error/{0}");
  public class ErrorController : Controller
    {
        [Route("/Error/Error/{code:int}")]
        public IActionResult Error(int code)
        {
            return View();
        }
    }

如果你想了解更多:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/error-handling?view=aspnetcore-3.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值