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

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. 背景图片自适应整个页面CSS+DIV

    <body style="overflow:hidden;"> <div class="wrapper"> <!--背景图片--& ...

  2. windows能连网络,可是打不开网页,出现无法解析server的DNS

    首先,我想先说作为一名刚学完计算机网络课的学生,并且还完毕了学校的号称和斯坦福一个难度级别的网络实验之后.我觉得自己对于计算机网络还是勉强入门了.对于各种之前仅仅是听过的各种tcp.http.路由器. ...

  3. 用python导出csv文件

    # coding: utf-8 import csv csvfile = open('csv.csv', 'wb') #打开方式还可以使用file对象 writer = csv.writer(csvf ...

  4. android.database.sqlite.SQLiteException: near "FROM"

      07-20 00:19:30.496: E/JavaBinder(6807): *** Uncaught remote exception!  (Exceptions are not yet su ...

  5. 远程阿里云window服务器报错身份验证错误

    整理文章,很久之前遇到的一个问题,一直呆在草稿箱,特发布出来,帮助可能遇到该问题的人 mstsc连接时报错如下 解决方法: 修改本地安全组策略[安全组  gpedit.msc]

  6. keras的训练引擎:train_array.py和train_generator.py

    keras的Model支持两种模式的训练: 直接传入数组,最终会调用train_array.py中的fit_loop()函数 直接传入生成器,最终会调用train_generator.py中的fit_ ...

  7. Tensorflow结点打包和依赖控制

    深度学习库能够充分发挥GPU并行计算的能力,但是有时我们却不得不需要串行.这时就需要用到依赖控制. import tensorflow as tf a = tf.Variable(1) b = tf. ...

  8. python中的struct模块

    struct模块用于将python中的对象转化为bytes. 举例 demo1:将int转换为bytes buf1 = 256 bin_buf1 = struct.pack('i', buf1) # ...

  9. maven-compiler-plugin升级到3.1出现问题(转)

    转自:http://my.oschina.net/zhuka/blog/124503 No compiler is provided in this environment. Perhaps you ...

  10. [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'beginTime';

    依照https://stackoverflow.com/questions/23702041/failed-to-convert-property-value-of-type-java-lang-st ...