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 ...
随机推荐
- Python 提取Twitter tweets中的元素(包括text, screen names, hashtags)
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-1 @author: guaguastd @name: ex ...
- FBXImport
using UnityEditor; public class MyEditor : AssetPostprocessor{ public void OnPreprocessModel() { Mod ...
- 网络编程——The C10K Problem(C10K = connection 10 kilo 问题)。k 表示 kilo,即 1000
The C10K problem翻译 (C10K = connection 10 kilo 问题).k 表示 kilo,即 1000 比如:kilometer(千米), kilogram(千克). 如 ...
- 大巧不工web前端设计修炼之道—笔记
设计原则: 深入人心的设计--别让我思考 简洁是一种文化,一种需求,一种思想 ·排版 ·字体(衬线 | | 无衬线)
- Excel中如何将时间戳转为时间?
Unix时间戳转换Excel时间? Excel中如何将时间戳转为时间? Excel默认不支持Unix格式时间戳,这在导入数据时十分不便.可以用以下公式将时间戳转换成Excel格式的时间: =(x+8* ...
- 解决C#使用Microsoft.Office.Interop.Excel操作Excel后进程一直存在的问题
This resolved the issue for me. Your code becomes: public Excel.Application excelApp = new Excel.App ...
- 服务端渲染 SSR
1.概述 SSR:网站内容由服务端渲染,然后返回客户端(查看网页源代码,所有内容都在源代码里面). 2.SSR优势 (1)SSR利于SEO. (2)SSR减少请求量和客户端渲染时间.
- redis bgsave 内存不够
客户反应很慢,程序玩不了,登录服务器,查看,发现cpu/io正常,内存也还有,但是负载很离谱的飙高到了30多,查原因: 因为用了redis,最近redis数据增长量很大,而且优化过,怀疑是redis问 ...
- 保存Hive查询结果的方法
很多时候,我们需要将Hive的查询(select)结果保存起来,方便进一步处理或查看.在Hive里面提供了不同的方式来保存查询结果,在这里做下总结: 一.保存结果到本地 方法1:调用hive标准输出, ...
- Atitit.数据库表的物理存储结构原理与架构设计与实践
Atitit.数据库表的物理存储结构原理与架构设计与实践 1. Oracle和DB2数据库的存储模型如图: 1 1.1. 2. 表数据在块中的存储以及RowId信息3 2. 数据表的物理存储结构 自然 ...