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

一、自带404状态处理

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

        //
// 摘要:
// Creates an Microsoft.AspNetCore.Mvc.NotFoundObjectResult that produces a Microsoft.AspNetCore.Http.StatusCodes.Status404NotFound
// response.
//
// 返回结果:
// The created Microsoft.AspNetCore.Mvc.NotFoundObjectResult for the response.
[NonAction]
public virtual NotFoundObjectResult NotFound(object value);
//
// 摘要:
// Creates an Microsoft.AspNetCore.Mvc.NotFoundResult that produces a Microsoft.AspNetCore.Http.StatusCodes.Status404NotFound
// response.
//
// 返回结果:
// The created Microsoft.AspNetCore.Mvc.NotFoundResult for the response.
[NonAction]
public virtual NotFoundResult NotFound();

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

二、自定义404页面显示

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

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

    /// <summary>
/// 定义404视图
/// </summary>
public class NotFoundViewResult : ViewResult
{
public NotFoundViewResult(string viewName)
{
ViewName = viewName;
StatusCode = (int)HttpStatusCode.NotFound;
}
}

2.在控制器中返回使用

        public IActionResult Index()
{
//返回404页面
return new NotFoundViewResult("~/views/Error/code_404.cshtml"); return View();
}

3.呈现结果:

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

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

            if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseStatusCodePagesWithReExecute("/Home/Error", null);
}

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

@{
int code = this.Context.Response.StatusCode;
ViewData["Title"] = code + "页面访问错误";
}
@section Head{ }
@section Footer{ }
<!-- 主体内容 -->
<div class="maincontent maincontentcoverage">
<div style="height:40px;"></div>
<!-- 主要内容 -->
<div class="primarycoverage aboutpage" style="font-size:16px;">
<div class="researchmain" style="margin-top: 0px;padding-bottom:60px;">
<div class="aboutSD">
@{
if (code == 404)
{
<div class="majorintroduct" style="margin-top: 0px;padding:50px;">
<div class="flowerTitle">
404了
</div>
<div class="introlduct" style="padding: 50px 50px;">
<div>
您要访问的页面不存在或已经删除~
</div>
<p></p>
<p></p>
<p></p>
<p></p>
<div class="button videoBtn" style="font-size:14px;" href="/">点击返回首页</div>
</div>
</div>
}
else
{
<div class="majorintroduct" style="margin-top: 0px;padding:50px;">
<div class="flowerTitle">
==> 500 访问出错
</div>
<div class="introlduct" style="padding: 50px 50px;">
<div>访问出错,请点击下边按钮返回。</div>
<p></p>
<p></p>
<p></p>
<p></p>
<div class="button videoBtn" style="font-size:14px;" href="/">点击返回首页</div>
</div>
</div>
}
}
</div>
</div>
</div>
</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. Failed to create Accelerated Display. Please check the display hardware and drivers meet the minimum requirements.

    ArcGIS Runtime for WPF开发中Map设置了属性UseAcceleratedDisplay="True",报错: Sample: LocalMap Error: ...

  2. 025 SSM简单搭建

    参考了同事的文档,自己也写一篇文档. 同时,补充了一下,程序是如何运行的. 一:SSM框架 1.说明 SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC ...

  3. 使用entitiy

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  4. bufferedwriter写json文件中文乱码

    需要用writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8& ...

  5. 洛谷 P3370 字符串哈希 (模板)

    <题目链接> <转载于 >>>  > 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共 ...

  6. webpack 4.x之搭建前端开发环境

    webpack是一个现代JavaScript应用程序的静态模块打包器,借用官网的一张图,它能够将一些预处理语言,js的最新语法转换成浏览器识别的内容.现在一般的前端框架都有比较成熟的脚手架,大多数对w ...

  7. Xamarin Essentials教程安全存储SecureStorage

    Xamarin Essentials教程安全存储SecureStorage   在实际应用中,应用程序会将一些数据保存在用户设备中,避免用户重复操作.但是为了防止因设备丢失或者感染病毒导致数据泄漏,需 ...

  8. 改变字体大小实现自适应之js方案A

    一.元素大小有两种写法 1.写结果:设计师给的移动端页面sketch设计稿一般是750px宽度,在sublime编辑器里,设置cssrem或rem-unit插件为56px的字体大小.做页面时,设计稿是 ...

  9. LeetCode(169. 求众数)

    问题描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...

  10. STM新建项目

    STM新建项目,为以后开发提供更好的平台,项目代码分级分类管理,便于查看. 1.新建一个文件夹,在里面分别新建固件库.内核.用户文件夹. 在网上下载STM32F10x_StdPeriph_Lib_V3 ...