ASP.NET MVC中全局异常处理

简介: 以前不知道从哪里找到的处理全局异常的,觉得蛮好用就记下来了。 1, 建立MyExecptionAttribute.cs类,写入如下代码: 源代码复制(IE有效)打印关于 using System;   using System.

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

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.   
  7. namespace Niunan.MVCShop.Code  
  8. {  
  9.     public class MyExecptionAttribute : HandleErrorAttribute  
  10.     {  
  11.         public static Queue<Exception> ExceptionQueue = new Queue<Exception>();//创建队列.  
  12.   
  13.         public override void OnException(ExceptionContext filterContext)  
  14.         {  
  15.             //将异常信息入队.  
  16.             ExceptionQueue.Enqueue(filterContext.Exception);//将异常信息入队.  
  17.             //filterContext.HttpContext.Response.Redirect("/error.html");  
  18.             base.OnException(filterContext);  
  19.         }  
  20.     }  
  21. }  



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.   
    11. namespace Niunan.MVCShop  
    12. {  
    13.     // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,  
    14.     // 请访问 http://go.microsoft.com/?LinkId=9394801  
    15.     public class MvcApplication : System.Web.HttpApplication  
    16.     {  
    17.         protected void Application_Start()  
    18.         {  
    19.             AreaRegistration.RegisterAllAreas();  
    20.   
    21.             WebApiConfig.Register(GlobalConfiguration.Configuration);   
    22.             RouteConfig.RegisterRoutes(RouteTable.Routes);  
    23.   
    24.             GlobalFilters.Filters.Add(new Code.MyExecptionAttribute()); //NET4建立的项目的话则是在APP_Stars/ConfigFilter.cs中  
    25.   
    26.             //通过线程开启一个线程,然后不停的从队列中或数据  
    27.             string filePath = Server.MapPath("/Log/");  
    28.             ThreadPool.QueueUserWorkItem(o =>  
    29.             {  
    30.                 while (true)  
    31.                 {  
    32.                     try  
    33.                     {  
    34.                         if (Code.MyExecptionAttribute.ExceptionQueue.Count > 0)  
    35.                         {  
    36.                             Exception ex = Code.MyExecptionAttribute.ExceptionQueue.Dequeue();//从队列中拿出数据  
    37.   
    38.                             if (ex != null)  
    39.   
    40.                             {  
    41.                                 Tool.TxtLog(ex.ToString(), filePath + DateTime.Now.ToString("yyyyMMdd")+".txt");  
    42.                             }  
    43.                             else  
    44.                             {  
    45.                                 Thread.Sleep(30);  
    46.                             }  
    47.                         }  
    48.                         else  
    49.                         {  
    50.                             Thread.Sleep(30);//避免了CPU空转。  
    51.                         }  
    52.                     }  
    53.                     catch (Exception ex)  
    54.                     {  
    55.                         Code.MyExecptionAttribute.ExceptionQueue.Enqueue(ex);  
    56.   
    57.                     }  
    58.                 }  
    59.   
    60.             }, filePath);  
    61.         }  
    62.     }  
    63. }  
目录
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
38 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
53 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
46 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
187 0
|
6月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
78 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
163 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
97 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
171 0
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
212 0