MVC 全局异常处理(适用多人操作)
2024-08-31 07:55:43
自定义特性:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace Niunan.MVCShop.Code
{
public class MyExecptionAttribute : HandleErrorAttribute
{
public static Queue<Exception> ExceptionQueue = new Queue<Exception>();//创建队列. public override void OnException(ExceptionContext filterContext)
{
//将异常信息入队.
ExceptionQueue.Enqueue(filterContext.Exception);//将异常信息入队.
//filterContext.HttpContext.Response.Redirect("/error.html");
base.OnException(filterContext);
}
}
}
全局Global文件
using Niunan.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing; namespace Niunan.MVCShop
{
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
// 请访问 http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes); GlobalFilters.Filters.Add(new Code.MyExecptionAttribute()); //NET4建立的项目的话则是在APP_Stars/ConfigFilter.cs中 //通过线程开启一个线程,然后不停的从队列中或数据
string filePath = Server.MapPath("/Log/");
ThreadPool.QueueUserWorkItem(o =>
{
while (true)
{
try
{
if (Code.MyExecptionAttribute.ExceptionQueue.Count > )
{
Exception ex = Code.MyExecptionAttribute.ExceptionQueue.Dequeue();//从队列中拿出数据 if (ex != null) {
Tool.TxtLog(ex.ToString(), filePath + DateTime.Now.ToString("yyyyMMdd")+".txt");
}
else
{
Thread.Sleep();
}
}
else
{
Thread.Sleep();//避免了CPU空转。
}
}
catch (Exception ex)
{
Code.MyExecptionAttribute.ExceptionQueue.Enqueue(ex); }
} }, filePath);
}
}
}
转 http://www.cnblogs.com/niunan/p/5736809.html
自定义过滤器,解决action方法名
回到筛选器public string ActionName { get; set; },其中ActionName是自定义Action的名称,比如在Create中直接[SupportFilter]那么ActionName取得就是Create,这将和你的数据库操作码进行对应的,那么我的方法是CreateAttr,那么要使用Create这个操作码,怎么办
那么就是
[SupportFilter(ActionName = "Create")]
public ActionResult CreateAttr()
那么类似的写法
[SupportFilter(ActionName = "Index")]
public JsonResult GetList()
最新文章
- x509数字证书导入-然后删除自身
- Linux编程环境
- 关于java中接口定义常量和类定义常量的区别
- google快捷键,通过浏览器本身来查看
- Flow: JavaScript静态类型检查工具
- 在PeopleSoft系统中实现打印页面的功能
- Linux rsync 同步
- UIImagePickerController拍照与摄像
- 【HDOJ】1086 You can Solve a Geometry Problem too
- FingerChaser(3) 解题报告目录
- c#工厂模式与抽象工厂模式
- UML之概述
- 记录Django学习1
- nuxtJs中直接使用自带的@nuxtjs/axios
- Forth 词典和词汇
- python内置函数,匿名函数
- Unity3d 协程(IEnumerator)范例
- 准备好要上传到 Azure 的 Windows VHD 或 VHDX
- 万恶之源 - Python基础数据类型三
- @Resource、@Autowired、@Qualifier 区别(表格显示)
热门文章
- chrome打开控制台状态下,没有人为打断点,自动进入断点模式的解决方法
- 自定义安装MS Office Project2007会出错
- [ Java ] [ JUnit ] [ Eclipse ] coverage
- aspnet_regiis加密文件提示路径中具有非法字符
- ObjecT4:On-line multiple instance learning (MIL)学习
- UVa340未完成
- LoadRunner时间戳函数web_save_timestamp_param
- hust 1570 Lazy. Lazy. Laaaaaaaaaaaazy!
- Drop it FreeCodeCamp
- C语言基础 (10) 变量作用域,生命周期 内存结构