自定义特性:
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()