404

如何自定义404页面

发布于 2020-03-19 15:28:08

由于项目需要,必须实现自定义的404页面进行美化,而这一块又被框架托管了,普通net core的方式无法实现404设置。
框架内部默认给404页面返回空白,查看源码后发现是在FrameworkServiceExtension->UseFrameworkService中对404状态码进行了处理,知道了问题所在就比较好解决了。
在项目中的Program.cs里添加如下代码

                         x.Use(async (context, next) =>
                        {
                            await next.Invoke();
                            if (context.Response.StatusCode == 404)
                            {
                                Stream myStream = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "/404.html", FileMode.Open);
                                Encoding encode = System.Text.Encoding.GetEncoding("utf-8");//若是格式为utf-8的需要将gb2312替换
                                StreamReader myStreamReader = new StreamReader(myStream, encode);
                                string strhtml = myStreamReader.ReadToEnd();
                                myStreamReader.Close();
                                await context.Response.BodyWriter.WriteAsync(Encoding.UTF8.GetBytes(strhtml).AsMemory());
                            }
                        });

然后在对应路径下添加404.html文件,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <h1>这是一个自定义404页面</h1>
</body>
</html>

然后404页面的效果就可以随心所欲的修改了。
最终效果如下图
image.png

2 条评论

发布
问题