asp.net mvc全局错误处理
2016-03-30 11:17
323 查看
方式一:全局捕获异常 根据错误编码直接跳转到对应静态页面
1,在Global.asax.cs文件中添加错误处理方法Application_Error 代码如下
2,根据错误编码新建对应的静态页面
-
方式二:全局捕获异常 路由到指定页面处理
优点 :在错误页可显示详细错误信息
缺点:需要有新的路由支持(控制器 ,action ) 代码如下
步骤1,在Global.asax.cs文件中添加错误处理方法Application_Error 代码如下
步骤2,新建对应的错误处理控制器或方法
注:这里面可以用一个方法处理 然后把错误编码也通过参数传进来 进行区分跳转页面或显示异常信息
也可以根据错误编码建立多个方法 在步骤1中根据错误编码路由到不同的方法进行显示
不足之处:
步骤2 通过参数传递错误信息会显示在地址栏
路过的朋友针对错误处理有更好的思路的欢迎建议,谢谢大家!
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 直接跳转到对应错误页面 switch (httpStatusCode) { case 404: 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 通过参数传递错误信息会显示在地址栏
路过的朋友针对错误处理有更好的思路的欢迎建议,谢谢大家!
相关文章推荐
- 2016-AspNet-MVC教学-7-Linq在数组中的应用
- ASP web.config 配置遇到的问题
- 基于轻量型Web服务器Raspkate的RESTful API的实现
- ASP.NET MVC中Scripts.Render、Styles.Render的使用
- Raspberry安装ssh
- 解决Raspberry使用vim键盘布局问题
- aspx ashx
- 【Raspberry Pi系列】2. 多种传输方式的比较
- Asp.Net Repeater的两层嵌套以及遍历取值的简单实现(checkbox)
- Asp.Net:GridView 编辑、删除、自定义分页以后备用
- Aspectj切入点语法定义
- Vesions ignore & ld: library not found for -l..
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
- ASP.NET MVC 返回JsonResult序列化内容超出最大限制报错的解决办法
- ASP.NET使用Quartz.NET实现定时任务调度
- ASP.NET网站性能提升的几个方法
- 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root
- 使用Aspose.Cells生成Excel的线型图表
- [ASP.NET MVC] 利用动态注入HTML的方式来设计复杂页面