1.自定义异常处理过滤器类文件

新建MyExceptionAttribute.cs异常处理类文件

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQcAAAAoCAIAAAB8RKinAAAEpUlEQVR4nO2cPW/TQBjHPTAy9BNka5es16UjAyMDX8EjEh8AIYHalVMRIBZeZlA3hIVUARItYjAvFSoLVhS1AsSLEBTR8iakY7ATP/fc+XqOk54b/j9FlXPx2Zfk+eXu7HsaqaknkyIqEDIL3RpwCIhCNwCA1gErAODACgA4sAIADqwAgNMKK3bebvZXl6oeoVsH/jtaYcX22pX3L+/8sjFxK5LYeb02iaM4mWwLQOsYpxW9Xq/W/rRD2N35XMeK/B6EGc5JXPeuBKwABmOzIk3Tbrdbq0p/dclqgqcVQggWz8X9OlgBmjEeK9I0nZub63Q6tWo1tCKWUmghm0khpHRHuQGsAAZjsCJN09nZ2U6nc9BWJHpI50940RAa3LQ8su4/KCutIAtH4MmU09QKqkQtK7YeXnBcdxpOM9xWqCQexCgpKSI6iXnA53uWW/pO1KfB0YZWZKxfAtNMIyuYErWs+PjqrsOKd89ve1mRTzBkVoa0ucGqsHK6v46QGekr8pexvPC/YHQrer1et9vt6PhX//Htk8OK/urSzoe+hxVFWMvY+MW3WDGI8yorLDHP5hVV177AVBHyfsWbJ9ccVmyvXfayovgVJ8+qRlCkfLB3JkVkK1dJPOwiij5JkioYS003Ia1w39Lury59fP3Iwwr9ic9sm06qJZtNsL3LvqKsBCemnZBW/Pn9K+DZAaiiFSs+AGgVsAIADqwAgAMrAODACgA4sAIADqwAgBPAivWt7wd/UgD8CWDF0fMvIIaLwYrHQCfFkpYQVkRnns0sbjQU49KDiwvL8/nj5uPrSqmF5fnh3wpGy2sl60AOZr1HIysyKUZqI6wghLFiZfNLEzFyJU7eOHHz8fVLDy7e20yGhuSPinqj5bUeTJSM6SyZFEIYKYraasj9zlKrJdOpUBgrlFJNxFhYnj9+9dje3i4rVB59Rf281sNkRb5cXl/+DitqE8wKpdS5++9mFje+/vxb9wgLy/Onb51iJZ59hTOvVR+7kEL2xdNhClmAbk1wZSX50dgCXLK2V8iMrwE2B2+DnBKWYGvJIaFHFoKehbZEO6m1hVa59Gbb3y+Fv9rapN9gVqxvfZ9Z3FjZ/DLCERr1Fe68VmIMTU41I7PYsSqdQ+nH0pMHtaOwlmibriRbUo+02JVta9mOLK9UtNB+GJboYj1peSBrcmQLCWNFEyWUUqdvnaLzipWnt/3qeeS1akXmF0/Rc1bNVD57yis7mtYkbkVVki2PP4sKZNtlRdkSe6CTp/taYX+/5NPg3Ud7k36DXYMaWQml1N7ebi5G/qhvRXVe6yDKrD/dOh5WWL7xhlaY2bS0kGFG+YStcER45attTPoNYMWRs8+bKNEAn7zWPMziWDgGA2UNMn6hCa6JLEb3ZsqrduWUPPEbQdkHSMI4G23PKFZYWkjeqr3Z1vdb1jI+nxYn/QawIpASyjuvlQUju19RjLwqIkSffFimk5kUURxbsl3LC8Ses23dCi4F04IO4CI62zY/m/1aGEUijjWFHdNnOu0xPp/WJv1iHZSFff6fYCNa97sITGCFwWTjFlYcAmCFhj7bmASw4hAAKwDg/AP6jkWMzfvWDQAAAABJRU5ErkJggg==" alt="" />

MyExceptionAttribute.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace WebApp.Models
{
public class MyExceptionAttribute : HandleErrorAttribute
{
public static Queue<Exception> exceptionQueue = new Queue<Exception>(); //异常处理队列对象 /// <summary>
/// 控制器方法中出现异常,会调用该方法捕获异常
/// </summary>
/// <param name="filterContext"></param>
public override void OnException(ExceptionContext filterContext)
{
exceptionQueue.Enqueue(filterContext.Exception);//将捕获的异常信息写到队列中 filterContext.HttpContext.Response.Redirect("/Error.html");//跳转到错误页面 base.OnException(filterContext);
} }
}

2.将错误处理过滤器修改为自定义的异常处理过滤器

aaarticlea/png;base64,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" alt="" />

修改如下:

using System.Web;
using System.Web.Mvc;
using WebApp.Models; namespace WebApp
{
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
filters.Add(new MyExceptionAttribute());//使用自定义异常处理的过滤器
}
}
}

3.修改Global.asax文件,在程序首次加载的时候,开启线程扫描异常队列,处理异常信息

using Spring.Web.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using WebApp.Models; namespace WebApp
{
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
// 请访问 http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : SpringMvcApplication //System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles); #region 开启线程扫描异队列,处理异常信息
string fileLogPath = Server.MapPath("/Log/");//知道用来保存错误日志文件的文件夹路径
//开启一个线程扫描日志队列
ThreadPool.QueueUserWorkItem((a) =>
{
while (true)
{
if (MyExceptionAttribute.exceptionQueue.Count > ) //判断队列中是否有数据
{
Exception ex = MyExceptionAttribute.exceptionQueue.Dequeue();//出队
if (ex != null)
{
string fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
File.AppendAllText(fileLogPath + fileName, ex.ToString(), Encoding.Default);//将异常追加写入到文件中
}
else
{
Thread.Sleep();
}
}
else
{
Thread.Sleep();//如果队列中没有数据,让当前线程休息3秒钟,避免造成CPU空转,避免CPU的浪费
}
}
}, fileLogPath);
#endregion }
}
}

4.测试:

   public ActionResult Index()
{
int a = ;
int b = ;
int c = a / b;
return Content(c.ToString());
}

5.效果

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" width="520" height="66" />

6.其他说明:

1.解决高并发错误日志问题:
   1.1用传统lock方式,如果并发量很大的话,用户会出现卡顿的情况。
   1.2.在服务器开辟一个队列,存储用户错误信息,然后单独开启一个线程来处理,就不会有卡顿情况。(队列是在内存中,写入速度很快)
   这就是生产者消费者模式

2.Global下Application_Start()方法只在程序首次执行时调用

3.ThreadPool线程池线程性能很好,比我们自己创建线程的效率要高很多。

4.池用来解决对象频繁创建的问题,频繁创建消耗性能。

5.Queue本身不是线程安全的,做下面的处理后就可以保证是线程内安全的了,就不会出现并发问题。

Queue queue = Queue.Synchronized(myQueue); 

7.源码下载:

点击下载源码>>

点击下载数据库文件>>

ASP.NET MVC自定义异常处理的更多相关文章

  1. Asp.net MVC 自定义异常处理类

    using ElegantWM.Common; using System; using System.Collections.Generic; using System.Linq; using Sys ...

  2. asp.net mvc 自定义pager封装与优化

    asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...

  3. ASP.NET MVC 自定义路由中几个需要注意的小细节

    本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...

  4. Asp.net Mvc 自定义Session (二)

    在 Asp.net Mvc 自定义Session (一)中我们把数据缓存工具类写好了,今天在我们在这篇把 剩下的自定义Session写完 首先还请大家跟着我的思路一步步的来实现,既然我们要自定义Ses ...

  5. Asp.net mvc 自定义全局的错误事件HandleErrorAttribute无效

    Asp.net mvc 自定义全局的错误事件HandleErrorAttribute,结果无效, 原因: 1.没有在RegisterGlobalFilters 里面添加或者你要的位置添加. 2.你把这 ...

  6. ASP.NET MVC自定义验证Authorize Attribute(包含cookie helper)

    前几天Insus.NET有在数据库实现过对某一字段进行加密码与解密<使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和 ...

  7. ASP.NET MVC 自定义Razor视图WorkContext

    概述 1.在ASP.NET MVC项目开发的过程中,我们经常需要在cshtml的视图层输出一些公用信息 比如:页面Title.服务器日期时间.页面关键字.关键字描述.系统版本号.资源版本号等 2.普通 ...

  8. asp.net MVC 自定义模型绑定 从客户端中检测到有潜在危险的 Request.QueryString 值

    asp.net mvc 自定义模型绑定 有潜在的Requset.Form 自定义了一个模型绑定器.前端会传过来一些敏感字符.调用bindContext. valueProvider.GetValue( ...

  9. asp.net core 自定义异常处理中间件

    asp.net core 自定义异常处理中间件 Intro 在 asp.net core 中全局异常处理,有时候可能不能满足我们的需要,可能就需要自己自定义一个中间件处理了,最近遇到一个问题,有一些异 ...

随机推荐

  1. 【洛谷】【最小生成树】P1536 村村通

    [题目描述:] 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府"村村通工程"的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路 ...

  2. exit status 3221225477 npm run dev 报错

    Fatal error in , line 0 # Check failed: U_SUCCESS(status). # # # #FailureMessage Object: 000000B5882 ...

  3. Destroying Array CF 722C

    题目大意就是给长度为 n 一个数列,有 n 每次删除,每一次删除第 i 个位置上的数,求每一次删除后剩余不连续数列的最大区间和. 输入样例 4 1 3 2 5 3 4 1 2 输出样例 5 4 3 0 ...

  4. Coprime (单色三角形+莫比乌斯反演(数论容斥))

    这道题,先说一下单色三角形吧,推荐一篇noip的论文<国家集训队2003论文集许智磊> 链接:https://wenku.baidu.com/view/e87725c52cc58bd631 ...

  5. CSS3之transition&transform

    参考网页: CSS3 transform 属性使用详解: http://www.renniaofei.com/code/css3-transform-shuxing-shiyong-xiangjie/ ...

  6. 使用pycharm调用模块后字体变灰

    点击小灯泡提示出现以下内容:This inspection detects names that should resolve but don't. Due to dynamic dispatch a ...

  7. Javascript 对象复制

    如果对象只是一个数据集,可采用json化再反json化的方式克隆一个对象,这个过程会丢失对象的方法.效率比较低. 可以采用如下递归的方式复制一个对象. function clone(target) { ...

  8. highcharts中把X轴的名字竖着显示

    Highcharts.chart('container', { chart: { type: 'column' }, title: { text: 'Auto rotation limit' }, s ...

  9. 把List<T>转换为DataTable

    下面这个学习,把List<T>转换为Datatable. 下面先创建一个对象T: class Ay { private int _ID; public int ID { get { ret ...

  10. 判断response.data是否为空

    需要对response.data进行判断,是否有数据返回.如果是空的,将要处理一些事情,反之,又要处理另外一些事情. 在jQuery程序中,有一个方法:$.isEmptyObject().此方法在an ...