• MVC 全局异常处理(适用多人操作)


    自定义特性:

     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 }  

    全局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 }  

     转  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()
  • 相关阅读:
    2019年3月6日 980. Unique Paths III
    2019年3月05日 961. N-Repeated Element in Size 2N Array
    2019年3月4日 701. Insert into a Binary Search Tree
    2019年3月1日 804. Unique Morse Code Words
    2019年2月28日 654. Maximum Binary Tree
    2019年2月26日 Unique Email Addresses、To Lower Case、Encode and Decode TinyURL
    Nexus Repository Manager 3 远程命令执行漏洞(CVE-2020-10199)复现
    常见的Web源码泄漏漏洞及其利用
    Nmap-脚本检测CVE漏洞
    Vulnhub-dpwwn-01靶机过关记录
  • 原文地址:https://www.cnblogs.com/moy-1313133/p/7053612.html
Copyright © 2020-2023  润新知