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

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. }

最新文章

  1. C# WinForm实现Windows 7 Aero磨砂玻璃效果
  2. Windows10 如何删掉内置的 skype ?
  3. jQuery多库共存处理
  4. 探秘Java虚拟机——内存管理与垃圾回收
  5. 不同服务器数据库之间的数据操作 sp_addlinkedserver
  6. c#1所搭建的核心基础之类型系统的特征
  7. jfinal框架教程-学习笔记
  8. 认识TDD
  9. JavaSE(十)之Collection总结
  10. php消息队列之 think queue消息队列初体验
  11. CentOS7中启动Chrome报错ERROR:zygote_host_impl_linux.cc
  12. opencv 增强现实(二):特征点匹配
  13. DataFrame WordCount
  14. Codeforces 803C. Maximal GCD 二分
  15. Flink PPT
  16. Eigen教程(5)
  17. 在Bash中定制炫酷的命令提示符
  18. win7-x64上MySql的初次安装
  19. spring quartz 配置及说明
  20. 给SqlParameter参数指定或不指定:@变量标识符的区别是什么?

热门文章

  1. picasso 在魅族手机无法加载缩略图的bug
  2. Oracle Data Integrator 12cR1 (12.1.3.0.0)安装过程
  3. spring mvc简单的demo(注解版)
  4. 【Linux】将一个命令的输出发送给另外一个命令
  5. python模块之importlib(py3中功能有明显加强)
  6. spark的外排:AppendOnlyMap与ExternalAppendOnlyMap
  7. 使用Docker运行Java Web应用
  8. UVM:8.4.3 用factory 机制创建实例的接口
  9. Kubernetes滚动更新介绍及使用-minReadySeconds
  10. (原+转)使用anaconda遇到的问题