在WTM框架中如何自定义404页面

KnifeZ 10/20/2020, 11:41:22 AM 74

由于项目需要,必须实现自定义的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());
   }
});
0
1
2
3
4
5
6
7
8
9
10
11
12

然后在对应路径下添加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>
0
1
2
3
4
5
6
7
8
9
10
11

然后404页面的效果就可以随心所欲的修改了。

#Tags

WTM