asp.net mvc全局错误处理
方式一:全局捕获异常 根据错误编码直接跳转到对应静态页面
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全局错误处理的更多相关文章
- ASP.NET MVC编程——错误处理与日记
ASP.NET MVC的错误处理应考虑到这几个方面:模型绑定期间发生的错误,未能路由到指定操作,针对控制器的错误处理.使用配置文件可以帮助我们处理异常,但是不够灵活和全面:使用HandleErrorA ...
- ASP.net MVC自定义错误处理页面的方法
在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...
- asp.net mvc 全局权限过滤器及继成权限方法
全局权限过滤器 //----------------------------------------------------------------------- // <copyright f ...
- C# MVC 全局错误Application_Error中处理(包括Ajax请求)
在MVC的Global.asax Application_Error 中处理全局错误. 如果在未到创建请求对象时报错,此时 Context.Handler == null . 判断为Ajax请求时,我 ...
- 在ASP.NET MVC自定义错误页面
异常处理跳转页面 第一步,在项目的Web.config文件中找到节点<system.web> 在此节点下添加配置(Error为定义的控制器也可以多添加些error标签用于区分不同的错误) ...
- ASP.NET MVC 全局异常
先新建一个过滤器ExceptionHandleErrorAttribute.cs 内容如下: using System; using System.Net; using System.Web; usi ...
- ASP.NET MVC中错误日志信息记录
MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public clas ...
- ASP.NET MVC 自定义错误页面心得
自定义错误页面的目的,就是为了能让程序在出现错误/异常的时候,能够有较好的显示体验. 所以,首先要先了解,我们可以在哪里捕获异常. 当程序发生错误的时候,我们可以在两个地方捕获: Global里面的A ...
- 【转】ASP.NET MVC中错误日志信息记录
MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public clas ...
随机推荐
- react-native-scrollable-tab-view 实现 TabBar
1.创建组件 src/components/CustomTabBar/index.js /** * 自定义选项卡 */ import React, {Component} from 'react'; ...
- 人工智能: 自动寻路算法实现(四、D、D*算法)
博客转载自:https://blog.csdn.net/kongbu0622/article/details/1871520 据 Drew 所知最短路经算法现在重要的应用有计算机网络路由算法,机器人探 ...
- Oracle 官网 jdk1.6 下载地址
在oracle官方网站下载地址 http://www.oracle.com/technetwork/java/archive-139210.html http://www.oracle.com/tec ...
- mongoDB 高级查询之复杂查询$where
http://blog.csdn.net/drifterj/article/details/7833883
- redis实践一些要注意的事项
不要放垃圾数据,及时清理无用数据实验性的数据和下线的业务数据及时删除; key尽量都设置过期时间对具有时效性的key设置过期时间,通过redis自身的过期key清理策略来降低过期key对于内存的占用, ...
- 在iis6里使用没有扩展名的mvc
这2天mvc第二个预览终于出来了.赶紧拿过来测试.在装了3.5的虚拟主机上运行正常.应该已经可以到能正常使用的阶段了.不过我前面一篇翻译的文章中说到,如果使用的是iis6的话就只能忍气吞声的使用带扩展 ...
- 今日头条&58转转笔试
昨天参加今日头条和58转转的笔试,因为时间上有冲突,所以主要选择参加头条的笔试. 先说头条: 头条的题型: 一道改错题 三道编程题 一道设计题 感受: 做题目的的时候还是有点紧张的,因为突然遇到题目需 ...
- Mysql查询缓存碎片、缓存命中率及Nagios监控
Mysql 的优化方案,在互联网上可以查找到非常多资料,今天对Mysql缓存碎片和命中率作了详细了解,个人作了简单整理. 一.Mysql查询缓存碎片和缓存命中率. mysql> SHOW STA ...
- Dart Essentials(读书笔记)——这本书非常大篇幅都在谈AngularDart,Zones概念没谈到
Dart Essentials 文件夹 1 Getting Started 2 Practical Dart 3 The Power of HTML5 with Dart 4 Developing a ...
- jquery的ajax-serialize()
jQuery ajax - serialize() 方法 jQuery Ajax 参考手册 实例 输出序列化表单值的结果: $("button").click(function() ...