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

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 通过参数传递错误信息会显示在地址栏 
路过的朋友针对错误处理有更好的思路的欢迎建议,谢谢大家!

最新文章

  1. day2
  2. 1.0 iOS中的事件
  3. js实现-下拉列表左右选择
  4. ASP.NET Global.asax详解
  5. proguard使用
  6. [OrangePi] If you are using an older image
  7. scala言语基础学习十
  8. mysql优化方法
  9. materialish-progress
  10. Js根据class名替换html标签内容 ,在某标签前后添加内容
  11. EntityManager 实例化方法
  12. 浏览器输入url回车后,会发生什么?
  13. 泛型List去除重复指定字段
  14. angular4.0懒加载
  15. Vue状态管理
  16. java 两个list 交集 并集 差集 去重复并集
  17. 【python51--__name__属性】
  18. 关于JAVA项目中的常用的异常处理情况总结
  19. wkhtmltopdf 参数介绍
  20. PAT甲题题解-1022. Digital Library (30)-map映射+vector

热门文章

  1. matlab中syms与sym有什么差别
  2. php RSA 加密 与java加密互交,java解密
  3. flask 框架 前端和后端请求超时问题
  4. windows lua 多线程 线程同步
  5. select/poll/epoll原理探究及总结
  6. ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)
  7. MVC 的八个扩展点
  8. PILE读书笔记_进程环境
  9. sendmail发件人邮箱设定命令
  10. boost中全局命名锁的使用