以前不知道从哪里找到的处理全局异常的,觉得蛮好用就记下来了。

1, 建立MyExecptionAttribute.cs类,写入如下代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. namespace Niunan.MVCShop.Code
  7. {
  8. public class MyExecptionAttribute : HandleErrorAttribute
  9. {
  10. public static Queue<Exception> ExceptionQueue = new Queue<Exception>();//创建队列.
  11. public override void OnException(ExceptionContext filterContext)
  12. {
  13. //将异常信息入队.
  14. ExceptionQueue.Enqueue(filterContext.Exception);//将异常信息入队.
  15. //filterContext.HttpContext.Response.Redirect("/error.html");
  16. base.OnException(filterContext);
  17. }
  18. }
  19. }

2,在Global文件代码如下:

    1. using Niunan.Utility;
    2. using System;
    3. using System.Collections.Generic;
    4. using System.Linq;
    5. using System.Threading;
    6. using System.Web;
    7. using System.Web.Http;
    8. using System.Web.Mvc;
    9. using System.Web.Routing;
    10. namespace Niunan.MVCShop
    11. {
    12. // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
    13. // 请访问 http://go.microsoft.com/?LinkId=9394801
    14. public class MvcApplication : System.Web.HttpApplication
    15. {
    16. protected void Application_Start()
    17. {
    18. AreaRegistration.RegisterAllAreas();
    19. WebApiConfig.Register(GlobalConfiguration.Configuration);
    20. RouteConfig.RegisterRoutes(RouteTable.Routes);
    21. GlobalFilters.Filters.Add(new Code.MyExecptionAttribute()); //NET4建立的项目的话则是在APP_Stars/ConfigFilter.cs中
    22. //通过线程开启一个线程,然后不停的从队列中或数据
    23. string filePath = Server.MapPath("/Log/");
    24. ThreadPool.QueueUserWorkItem(o =>
    25. {
    26. while (true)
    27. {
    28. try
    29. {
    30. if (Code.MyExecptionAttribute.ExceptionQueue.Count > 0)
    31. {
    32. Exception ex = Code.MyExecptionAttribute.ExceptionQueue.Dequeue();//从队列中拿出数据
    33. if (ex != null)
    34. {
    35. Tool.TxtLog(ex.ToString(), filePath + DateTime.Now.ToString("yyyyMMdd")+".txt");
    36. }
    37. else
    38. {
    39. Thread.Sleep(30);
    40. }
    41. }
    42. else
    43. {
    44. Thread.Sleep(30);//避免了CPU空转。
    45. }
    46. }
    47. catch (Exception ex)
    48. {
    49. Code.MyExecptionAttribute.ExceptionQueue.Enqueue(ex);
    50. }
    51. }
    52. }, filePath);
    53. }
    54. }
    55. }

ASP.NET MVC中全局异常处理的更多相关文章

  1. ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常

    在ASP.NET MVC中,通过应用程序生命周期中的Application_Error事件可以捕获到网站引发的所有未处理异常.本文作为学习笔记,记录了使用Global.asax文件的Applicati ...

  2. [翻译] ASP.NET WebAPI 中的异常处理

    原文链接:https://docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/exception-handling 本文介绍 ...

  3. mvc自定义全局异常处理

    异常信息处理是任何网站必不可少的一个环节,怎么有效显示,记录,传递异常信息又成为重中之重的问题.本篇将基于上篇介绍的html2cancas截图功能,实现mvc自定义全局异常处理.先看一下最终实现效果: ...

  4. ASP.NET MVC中的错误处理

    ASP.NET MVC中的错误的错误处理跨越了两个主要领域:程序异常和路由异常的处理.前者是关于在控制器和视图中捕获错误的;而后者更多是有关重定向和HTTP错误的. 1.在WebConfig中把过滤器 ...

  5. 在ASP.NET MVC中实现基于URL的权限控制

    本示例演示了在ASP.NET MVC中进行基于URL的权限控制,由于是基于URL进行控制的,所以只能精确到页.这种权限控制的优点是可以在已有的项目上改动极少的代码来增加权限控制功能,和项目本身的耦合度 ...

  6. asp.net MVC中的AppendTrailingSlash以及LowercaseUrls

    asp.net MVC中的AppendTrailingSlash以及LowercaseUrls asp.net MVC是一个具有极大扩展性的框架,可以在从Url请求开始直到最终的html的渲染之间进行 ...

  7. Asp.net mvc 中Action 方法的执行(二)

    [toc] 前面介绍了 Action 执行过程中的几个基本的组件,这里介绍 Action 方法的参数绑定. 数据来源 为 Action 方法提供参数绑定的原始数据来源于当前的 Http 请求,可能包含 ...

  8. Asp.net mvc 中的路由

    在 Asp.net mvc 中,来自客户端的请求总是针对某个 Controller 中的 Action 方法,因此,必须采用某种机制从请求的 URl 中解析出对应的 Controller 和 Acti ...

  9. 在ASP.NET MVC中使用Castle Windsor

    平常用Inject比较多,今天接触到了Castle Windsor.本篇就来体验其在ASP.NET MVC中的应用过程. Visual Studio 2012创建一个ASP.NET MVC 4网站. ...

随机推荐

  1. 〖Linux〗Shell十进制数值转换十六进制

    dec2hex(){ printf } a=$(dec2hex ) echo $a

  2. RRT路径规划算法

    传统的路径规划算法有人工势场法.模糊规则法.遗传算法.神经网络.模拟退火算法.蚁群优化算法等.但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度 ...

  3. 不同类型的磁盘存储在Ubuntu下的性能测试

    Ubuntu下通过lsusb判断USB存储是否是USB3.0: # 要查看Seagate这个移动硬盘 lsusb 或者 lsusb -t $ lsusb Bus Device : ID : Intel ...

  4. input文本框在div中居中

    {display:block;margin-left:auto;margin-right:auto;}

  5. Windows phone 应用开发系列教程(更新中)

    Windows phone 应用开发[1]-Text To Speech        作为开篇章节.第一篇将在如下介绍一些Windows phone比较有意思的东西-Text To Speech[文 ...

  6. wxml解析

    一.数据绑定 wxml中的动态数据均来自于对应js文件中的Page的data,在js中访问Page的data用this.data, 改变data中某个属性的值用setData()方法. Page({ ...

  7. Linux命令-进程后台执行:nohup(就是不挂起的意思)

    nohup 就是不挂起的意思( no hang up) 用途:LINUX命令用法,不挂断地运行命令. 语法: nohup Command [ Arg ... ] [ & ] 描述:nohup ...

  8. oracle下导出某用户所有表的方法

    oracle下导出某用户所有表的方法 scott/tiger是用户名和密码,handson是导出的实例名 按用户方式导出数据(owner当中写的是用户名) exp scott/tiger@handso ...

  9. java.lang.IllegalStateException: No typehandler found for mapping XXX

    前言:今天遇到了这个问题,刚开始觉得很容易解决的,毕竟能定位到出问题的文件和对应的字段,根据以往的经验也可以判断出是字段映射类型不匹配的问题,后来找了半天还是没找到问题的根源,从网上百度,也没看到令人 ...

  10. SQLAlchemy(2) -- SQLAlchemy的安装

    安装前要先安装好python 1.使用setup.py脚本进行安装C:\> C:\Python27\python.exe .\setup.py installrunning installrun ...