方式一:全局捕获异常 根据错误编码直接跳转到对应静态页面

1,在Global.asax.cs文件中添加错误处理方法Application_Error 代码如下

protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Log.Error(exception); //记录日志信息
var httpStatusCode = (exception as HttpException)?.GetHttpCode() ?? ; //如果为空则走自定义
var httpContext = ((MvcApplication)sender).Context;
httpContext.ClearError(); #region 直接跳转到对应错误页面
switch (httpStatusCode)
{
case :
httpContext.Response.Redirect("/Error/404.html");
break;
default:
httpContext.Response.Redirect("/Error/500.html");
break;
}
#endregion
}

2,根据错误编码新建对应的静态页面

-

方式二:全局捕获异常 路由到指定页面处理

优点 :在错误页可显示详细错误信息
缺点:需要有新的路由支持(控制器 ,action ) 代码如下

步骤1,在Global.asax.cs文件中添加错误处理方法Application_Error 代码如下

protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Log.Error(exception); //记录日志信息
var httpStatusCode = (exception as HttpException)?.GetHttpCode() ?? 700; //如果为空则走自定义
var httpContext = ((MvcApplication)sender).Context;
httpContext.ClearError(); #region 重定向到错误处理控制器
var routeDic = new RouteValueDictionary
{
{"controller", "Error"},
{"error", exception}
};
httpContext.Response.RedirectToRoute("Default", routeDic);
#endregion
}

  

步骤2,新建对应的错误处理控制器或方法

注:这里面可以用一个方法处理 然后把错误编码也通过参数传进来 进行区分跳转页面或显示异常信息

也可以根据错误编码建立多个方法 在步骤1中根据错误编码路由到不同的方法进行显示

public class ErrorController : Controller
{
public ActionResult Index(string error)
{
ViewBag.Summary= "WebSite 网站内部错误";
ViewBag.Description = error;
return View();
}
//public ActionResult HttpError404(string error)
//{
// ViewData["Title"] = "HTTP 404- 访问的页面不存在";
// ViewData["Description"] = error;
// return View();
//}
}

不足之处:
步骤2 通过参数传递错误信息会显示在地址栏 
路过的朋友针对错误处理有更好的思路的欢迎建议,谢谢大家!

asp.net mvc全局错误处理的更多相关文章

  1. ASP.NET MVC编程——错误处理与日记

    ASP.NET MVC的错误处理应考虑到这几个方面:模型绑定期间发生的错误,未能路由到指定操作,针对控制器的错误处理.使用配置文件可以帮助我们处理异常,但是不够灵活和全面:使用HandleErrorA ...

  2. ASP.net MVC自定义错误处理页面的方法

    在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...

  3. asp.net mvc 全局权限过滤器及继成权限方法

    全局权限过滤器 //----------------------------------------------------------------------- // <copyright f ...

  4. C# MVC 全局错误Application_Error中处理(包括Ajax请求)

    在MVC的Global.asax Application_Error 中处理全局错误. 如果在未到创建请求对象时报错,此时 Context.Handler == null . 判断为Ajax请求时,我 ...

  5. 在ASP.NET MVC自定义错误页面

    异常处理跳转页面 第一步,在项目的Web.config文件中找到节点<system.web> 在此节点下添加配置(Error为定义的控制器也可以多添加些error标签用于区分不同的错误) ...

  6. ASP.NET MVC 全局异常

    先新建一个过滤器ExceptionHandleErrorAttribute.cs 内容如下: using System; using System.Net; using System.Web; usi ...

  7. ASP.NET MVC中错误日志信息记录

    MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public clas ...

  8. ASP.NET MVC 自定义错误页面心得

    自定义错误页面的目的,就是为了能让程序在出现错误/异常的时候,能够有较好的显示体验. 所以,首先要先了解,我们可以在哪里捕获异常. 当程序发生错误的时候,我们可以在两个地方捕获: Global里面的A ...

  9. 【转】ASP.NET MVC中错误日志信息记录

    MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public clas ...

随机推荐

  1. vue 预渲染 prerender-spa-plugin

    1.预渲染说明 https://ssr.vuejs.org/zh/#为什么使用服务器端渲染-ssr-? 如果你调研服务器端渲染(SSR)只是用来改善少数营销页面(例如 /, /about, /cont ...

  2. 【Python】八大排序算法的比较

    排序是数据处理比较核心的操作,八大排序算法分别是:直接插入排序.希尔排序.简单选择排序.堆排序.冒泡排序.快速排序.归并排序.基数排序 以下是排序图解: 直接插入排序 思想 直接插入排序是一种最简单的 ...

  3. Spring集成Jersey开发(附demo)

    下文将会初步介绍如何在Spring中集成Jersey,并附简单的demo 所依赖的技术版本: Jersey 1.8 Spring 3.0.5.RELEASE 1. 项目依赖 pom.xml定义(注意去 ...

  4. PyCharm 环境配置

    1.去掉“自动保存功能” pycharm默认是自动保存的,习惯自己按 ctrl + s 的可以进行如下设置: 菜单File -> Settings... -> Appearance &am ...

  5. Silverlight实例教程 - Validation数据验证开篇

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  6. unity, 显示像素图,以及iOS下像素图变模糊解决办法

    在PS里画了个16x16像素的图: 在webplayer下Filter Mode选为Point,显示效果为: 在ios下显示效果为: 是由于iOS下会将图片压缩为pvr所致,想得到清晰的效果,需将Fo ...

  7. 阻塞赋值与非阻塞赋值(verilog篇)

    阻塞赋值与非阻塞赋值(verilog篇) 2017-09-30 竹海 相约电子ee 相信刚刚接触verilog的读者,多少对阻塞赋值和非阻塞赋值仍有一些困惑.笔者在这篇文章,带领大家深入的理解这两者的 ...

  8. UVa 11997 K Smallest Sums 优先队列&amp;&amp;打有序表&amp;&amp;归并

    UVA - 11997 id=18702" target="_blank" style="color:blue; text-decoration:none&qu ...

  9. 448. Find All Numbers Disappeared in an Array【easy】

    448. Find All Numbers Disappeared in an Array[easy] Given an array of integers where 1 ≤ a[i] ≤ n (n ...

  10. jquery的text()

    jQuery 文档操作 - text() 方法 jQuery 文档操作参考手册 实例 设置所有 <p> 元素的内容: $(".btn1").click(function ...