在使用Asp.Net Core Mvc时 404处理整理如下

一、自带404状态处理

1.控制器视图子弹404视图 NotFoundResult,NotFoundObjectResult

  1. //
  2. // 摘要:
  3. // Creates an Microsoft.AspNetCore.Mvc.NotFoundObjectResult that produces a Microsoft.AspNetCore.Http.StatusCodes.Status404NotFound
  4. // response.
  5. //
  6. // 返回结果:
  7. // The created Microsoft.AspNetCore.Mvc.NotFoundObjectResult for the response.
  8. [NonAction]
  9. public virtual NotFoundObjectResult NotFound(object value);
  10. //
  11. // 摘要:
  12. // Creates an Microsoft.AspNetCore.Mvc.NotFoundResult that produces a Microsoft.AspNetCore.Http.StatusCodes.Status404NotFound
  13. // response.
  14. //
  15. // 返回结果:
  16. // The created Microsoft.AspNetCore.Mvc.NotFoundResult for the response.
  17. [NonAction]
  18. public virtual NotFoundResult NotFound();

2.当前操作返回404状态,或者返回404的一句话提示。

二、自定义404页面显示

在网站中,为了增强提前,通常使用自定义404页面

1.自定义404视图,在控制器中返回

  1. /// <summary>
  2. /// 定义404视图
  3. /// </summary>
  4. public class NotFoundViewResult : ViewResult
  5. {
  6. public NotFoundViewResult(string viewName)
  7. {
  8. ViewName = viewName;
  9. StatusCode = (int)HttpStatusCode.NotFound;
  10. }
  11. }

2.在控制器中返回使用

  1. public IActionResult Index()
  2. {
  3. //返回404页面
  4. return new NotFoundViewResult("~/views/Error/code_404.cshtml");
  5.  
  6. return View();
  7. }

3.呈现结果:

三、全站统一处理404 或者500的错误,并自定义页面内容

1.使用app.UseStatusCodePagesWithReExecute(path,param)可以指定错误和参数

  1. if (env.IsDevelopment())
  2. {
  3. app.UseDeveloperExceptionPage();
  4. }
  5. else
  6. {
  7. app.UseStatusCodePagesWithReExecute("/Home/Error", null);
  8. }

2. 页面内容根据状态处理

  1. @{
  2. int code = this.Context.Response.StatusCode;
  3. ViewData["Title"] = code + "页面访问错误";
  4. }
  5. @section Head{
  6.  
  7. }
  8. @section Footer{
  9.  
  10. }
  11. <!-- 主体内容 -->
  12. <div class="maincontent maincontentcoverage">
  13. <div style="height:40px;"></div>
  14. <!-- 主要内容 -->
  15. <div class="primarycoverage aboutpage" style="font-size:16px;">
  16. <div class="researchmain" style="margin-top: 0px;padding-bottom:60px;">
  17. <div class="aboutSD">
  18. @{
  19. if (code == 404)
  20. {
  21. <div class="majorintroduct" style="margin-top: 0px;padding:50px;">
  22. <div class="flowerTitle">
  23. 404
  24. </div>
  25. <div class="introlduct" style="padding: 50px 50px;">
  26. <div>
  27. 您要访问的页面不存在或已经删除~
  28. </div>
  29. <p></p>
  30. <p></p>
  31. <p></p>
  32. <p></p>
  33. <div class="button videoBtn" style="font-size:14px;" href="/">点击返回首页</div>
  34. </div>
  35. </div>
  36. }
  37. else
  38. {
  39. <div class="majorintroduct" style="margin-top: 0px;padding:50px;">
  40. <div class="flowerTitle">
  41. ==> 500 访问出错
  42. </div>
  43. <div class="introlduct" style="padding: 50px 50px;">
  44. <div>访问出错,请点击下边按钮返回。</div>
  45. <p></p>
  46. <p></p>
  47. <p></p>
  48. <p></p>
  49. <div class="button videoBtn" style="font-size:14px;" href="/">点击返回首页</div>
  50. </div>
  51. </div>
  52. }
  53. }
  54. </div>
  55. </div>
  56. </div>
  57. </div>

显示效果:

更多:

Asp.Net Core异常处理整理

.Net Core邮件发送之MailKit

Asp.Net Core中Json序列化处理整理

Asp.Net Core 404处理的更多相关文章

  1. Asp.Net Core获取请求上下文HttpContext

    注:特别说明当前版本对应.Net Core2.1意义上框架 一.注入HttpContextAccessor ASP.NET Core中提供了一个IHttpContextAccessor接口,HttpC ...

  2. asp.net core WebAPI学习以及 发布(***入门学习)

    A asp.net Core 系列[一]——创建Web应用 asp.net Core 系列[二]—— 使用 ASP.NET Core 和 VS2017 for Windows 创建 Web API a ...

  3. ASP.NET Core 处理 404 Not Found

    问题 在没有修改任何配置的情况下,这是用户使用 Chrome 访问不存在的URL时会看到的内容: 幸运的是,处理错误状态代码非常简单,我们将在下面介绍三种技术. 解决方案 在以前的ASP.NET MV ...

  4. ASP.NET Core 如何实现404错误跳转到主页

    假如用户在Web浏览器上敲错了URL,访问了ASP.NET Core站点下一个不存在的URL地址,那么默认情况下ASP.NET Core会返回给浏览器著名的404错误,那么有什么办法可以让ASP.NE ...

  5. ASP.NET Core Kestrel 随机404错误

    一.Bug 出现 最近遇到一个很诡异的bug,Visual Studio 2017调试ASP.NET Core 2.2 Web程序的时候,随机性的出现404错误.如下图 事实上这个css文件是存在的, ...

  6. ASP.NET Core的路由[5]:内联路由约束的检验

    当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteC ...

  7. ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...

  8. ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件

    虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件 ...

  9. 学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?

    ASP.NET Core管道虽然在结构组成上显得非常简单,但是在具体实现上却涉及到太多的对象,所以我们在 "通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流 ...

随机推荐

  1. Codeforces 911F Tree Destruction

    Tree Destruction 先把直径扣出来, 然后每个点都和直径的其中一端组合, 这样可以保证是最优的. #include<bits/stdc++.h> #define LL lon ...

  2. Codeforces 830D Singer House 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF830D.html 题解 考虑用 $dp[i][j]$ 表示深度为 $i$ 的树里,有 $j$ 条路径的方案数 ...

  3. 51Nod1038 X^A Mod P 数论 原根 BSGS

    原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1038.html 题目传送门 - 51Nod1038 题意 题解 在模质数意义下,求高次剩余,模板题. ...

  4. HDU5117 Fluorescent 期望 计数 状压dp 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/HDU5117.html 题目传送门 - HDU5117 题意 $T$ 组数据. 给你 $n$ 盏灯 ,$m$ 个 ...

  5. mySql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver

    Mysql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver 1. 在使用mysql时,控制台日志报错如下: Loading class `c ...

  6. apache利用http_referer进行防盗链

    http://blog.sina.com.cn/s/blog_8729dd9801011rn1.html

  7. Jupyter运行时出现下面的错误:Unexpected error while saving file: arma/Untitled.ipynb [Errno 13] Permission denied:

    运行环境:Ubuntu16.04+Python2.7执行如下代码修改Jupyter的一部分文件的权限(执行完之后重新启动即可): sudo chmod ~/.local/share/jupyter/ ...

  8. 图解安装Debian 9.5全过程

    本文将为你带来安装Debian 9.5 GNU/Linux的教程,安装全过程图文并茂讲解.安装Debian 9.5可以把ISO文件下载下来刻录成DVD安装或者采用虚拟机安装等等方法. 一.下载Debi ...

  9. Elasticsearch 基于 URL 的搜索请求

    背景 Elasticsearch 不像关系型数据库,没有简易的 SQL 用来查询数据,只能通过调用 RESTful API 实现查询.大体上查询分为两种,基于 URL 的和基于请求主体的.基于 URL ...

  10. QtQuick大坑笔记之Http的Get与Post操作(带cookie)

    前言 最近在为单位做一个简单的手机App,基于Qt技术栈的选择了QtQuick来开发.不得不说QtQucik开发的确舒服,很多东西都不用写就可以只用,UI定义起来也比较自由.但是本人想通过cookie ...