ASP.NET mvc异常处理的方法
来源:互联网 发布:社会网络理论有什么用 编辑:程序博客网 时间:2024/05/16 11:41
第一种:全局异常处理
1.首先常见保存异常的类(就是将异常信息写入到文件中去)
public class LogManager { private string logFilePath = string.Empty; public LogManager(string logFilePath) { this.logFilePath = logFilePath; FileInfo file = new FileInfo(logFilePath); if (!file.Exists) { file.Create().Close(); } } public void SaveLog(string message, DateTime writerTime) { string log = writerTime.ToString() + ":" + message; StreamWriter sw = new StreamWriter(logFilePath, true); sw.WriteLine(log); sw.Close(); } }
2.编写一个异常的基类让其继承自controller类
public class BaseExceptionController : Controller { protected override void OnException(ExceptionContext filterContext) { LogManager logManager = new LogManager(Server.MapPath("~/Exception.txt")); logManager.SaveLog(filterContext.Exception.Message, DateTime.Now); base.OnException(filterContext); } }3.编写控制器,让其继承自上面的异常基类
public class ExceptionController : BaseExceptionController { public ActionResult Index() { throw new Exception("我抛出异常了!");//这个是为了查看结果故意抛出的异常 } }通过上面的方式可以对整个控制器中的action都能进行异常的获取,但是这种方式不太灵活,那么就看第二种方式
第二种:控制器异常处理
这种方式就在需要进行异常处理的controller中重写OnException()方法即可,因为它本身继承了IExceptionFilter接口
public class ExceptionController : Controller { public ActionResult Index() { throw new Exception("我抛出异常了!"); } protected override void OnException(ExceptionContext filterContext) { string filePath = Server.MapPath("~/Exception。txt"); StreamWriter sw = System.IO.File.AppendText(filePath); sw.WriteLine(DateTime.Now.ToString() + ":" + filterContext.Exception.Message); sw.Close(); base.OnException(filterContext); Redirect("/"); } }前面两种都是在controller中重写OnException方法,这样只要controller中又异常,那么就会被捕捉并被处理,但是如果我们要针对某个action使用异常处理呢?那么我们就要用到下面的过滤器异常处理来进行。
namespace MyMVC.Controllers{ public class ExceptionController : Controller { [Error] public ActionResult Index() { throw new Exception("过滤器异常!"); } }}public class ErrorAttribute : HandleErrorAttribute{ public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); string path = filterContext.HttpContext.Server.MapPath("~/Exception.txt"); StreamWriter sw = System.IO.File.AppendText(path); sw.WriteLine(DateTime.Now.ToString()+":"+filterContext.Exception.Message); sw.Close(); }}
第四种:路由异常处理
//设置路由参数routes.MapRoute("ErrorHandling", "{*str}", new { controller = "Exception", action = "Missing" });//一定要放在所有配置的最下面、public ActionResult Missing(string str) { ViewData["ErrMsg"] = "您访问的页面出错了,"+str+" 时间:"+DateTime.Now.ToString(); return View(); }
第五种:动作异常处理
//首先设置: <system.web> <customErrors mode="On"> <error statusCode="404" redirect="/Exception/Missing"/> </customErrors> </system.web> public ActionResult Missing(string str) { ViewData["ErrMsg"] = "您访问的页面出错了,"+str+" 时间:"+DateTime.Now.ToString(); return View(); }
0 0
- ASP.NET mvc异常处理的方法
- asp.net mvc异常处理的不同方法c
- ASP.NET mvc异常处理的方法有哪些
- asp.net mvc 的异常处理解决方案
- asp.net mvc 的异常处理解决方案
- ASP.NET MVC 异常处理
- Asp.net MVC Session过期异常的处理
- ASP.NET MVC下基于异常处理的完整解决方案
- asp.net mvc全局异常处理
- ASP.NET MVC中全局异常处理
- ASP.NET MVC中的统一化自定义异常处理
- ASP.NET MVC自定义异常捕捉及处理
- ASP.NET MVC Json()处理大数据异常解决方法
- ASP.NET MVC Json()处理大数据异常解决方法
- ASP.NET MVC中的统一化自定义异常处理
- ASP.NET MVC中的统一化自定义异常处理
- ASP.NET Core MVC 中设置全局异常处理方式
- ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
- oracle event 'cursor: mutex S'
- sqlserver 全文索引
- evernote杂记整理
- 华为机试:添加符号使等式成立
- openerp/odoo权限设置总结
- ASP.NET mvc异常处理的方法
- win7不用破解工具,最简单的去黑屏办法
- 小憩
- JAVA反射机制的几种实现
- 1.画图相关
- 改革能给中国足球带来希望吗?
- 牛顿法、雅克比矩阵、海森矩阵
- 昂贵的聘礼 1062 (最短路(单向)+建图)
- Spring 入门教程(二) 生命周期和作用域