Asp.Net Core 404处理
在使用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 404处理的更多相关文章
- Asp.Net Core获取请求上下文HttpContext
注:特别说明当前版本对应.Net Core2.1意义上框架 一.注入HttpContextAccessor ASP.NET Core中提供了一个IHttpContextAccessor接口,HttpC ...
- asp.net core WebAPI学习以及 发布(***入门学习)
A asp.net Core 系列[一]——创建Web应用 asp.net Core 系列[二]—— 使用 ASP.NET Core 和 VS2017 for Windows 创建 Web API a ...
- ASP.NET Core 处理 404 Not Found
问题 在没有修改任何配置的情况下,这是用户使用 Chrome 访问不存在的URL时会看到的内容: 幸运的是,处理错误状态代码非常简单,我们将在下面介绍三种技术. 解决方案 在以前的ASP.NET MV ...
- ASP.NET Core 如何实现404错误跳转到主页
假如用户在Web浏览器上敲错了URL,访问了ASP.NET Core站点下一个不存在的URL地址,那么默认情况下ASP.NET Core会返回给浏览器著名的404错误,那么有什么办法可以让ASP.NE ...
- ASP.NET Core Kestrel 随机404错误
一.Bug 出现 最近遇到一个很诡异的bug,Visual Studio 2017调试ASP.NET Core 2.2 Web程序的时候,随机性的出现404错误.如下图 事实上这个css文件是存在的, ...
- ASP.NET Core的路由[5]:内联路由约束的检验
当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteC ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
- ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件
虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件 ...
- 学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?
ASP.NET Core管道虽然在结构组成上显得非常简单,但是在具体实现上却涉及到太多的对象,所以我们在 "通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流 ...
随机推荐
- ERROR 000732:Output Geodatabase:Dataset Database Connections\Connection to localhost.sde\SDE.Dataset does not exist or is not supported
ArcCatalog 10中向SDE 数据集导入要素类时,出错:ERROR 000732:Output Geodatabase:Dataset Database Connections\Connect ...
- Python select解析
一.首先列一下,sellect.poll.epoll三者的区别 1.select a.select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监控多个文件描述符的数组,当 ...
- User模型扩展和自定义
参考如下: django文档参考 django signal使用总结 django 信号注册 django信号问题1 django oneTooneFiled 1. django 自定义用户u ...
- AtCoder Grand Contest 017D (AGC017D) Game on Tree 博弈
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC017D.html 题目传送门 - AGC017D 题意 给定一棵 n 个节点的以节点 1 为根的树. 两个 ...
- BZOJ4589 Hard Nim FWT 快速幂 博弈
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4589.html 题目传送门 - BZOJ4589 题意 有 $n$ 堆石子,每一堆石子的取值为 $2$ ...
- nginx安装,运行(ubuntu)
文本只涉及单节点nginx 安装gcc g++依赖库 apt-get install build-essential apt-get install libtool 安装pcre依赖库 apt-get ...
- BeanFactory和FactoryBean的区别
转自:http://blog.csdn.net/wangbiao007/article/details/53183764 1.BeanFactory BeanFactory是IOC最基本的容器,负责生 ...
- Java实现简单计算器、抽票程序
计算器: import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt. ...
- P1938 [USACO09NOV]找工就业Job Hunt
P1938 [USACO09NOV]找工就业Job Hunt给边赋予价值,入边的权值为D-Ti,然后从起点开始跑最长路,如果钱的总数超过了D*C,也就是一定有一个城市走了两遍,则有正环,则输出-1 # ...
- Docker 搭建 Tomcat + Mysql
Docker 搭建 Tomcat + Mysql 准备 虚拟机 虚拟机安装Docker 在纯净的Centos镜像上搭建 Centos镜像准备 虚拟机上拉取 Centos 镜像: docker pull ...