自定义过滤器使用非常灵活,可以精确的注入到请求前、请求中和请求后。继承抽象类ActionFilterAttribute并重写里面的方法即可:

public class SystemLogAttribute : ActionFilterAttribute

{

public string Operate { get; set; }

public override void OnActionExecuted(ActionExecutedContext filterContext)

{

filterContext.HttpContext.Response.Write("<br/>" + Operate + ":OnActionExecuted");

base.OnActionExecuted(filterContext);

}

public override void OnActionExecuting(ActionExecutingContext filterContext)

{

filterContext.HttpContext.Response.Write("<br/>" + Operate + ":OnActionExecuting");

base.OnActionExecuting(filterContext);

}

public override void OnResultExecuted(ResultExecutedContext filterContext)

{

filterContext.HttpContext.Response.Write("<br/>" + Operate + ":OnResultExecuted");

base.OnResultExecuted(filterContext);

}

public override void OnResultExecuting(ResultExecutingContext filterContext)

{

filterContext.HttpContext.Response.Write("<br/>" + Operate + ":OnResultExecuting");

base.OnResultExecuting(filterContext);

}

}

这个过滤器适合做系统操作日志记录功能:

[SystemLog(Operate = "添加用户")]

public string CustomerFilterTest()

{

Response.Write("<br/>Action 执行中...");

return "<br/>Action 执行结束";

}

看下结果:

四个方法执行顺序:OnActionExecuting—>OnActionExecuted—>OnResultExecuting—>OnResultExecuted,非常精确的控制了整个请求过程。

实际开发中中记录日志过程是这样的:在OnActionExecuting方法里写一条操作日志到数据库里,全局变量存下这条记录的主键,到OnResultExecuted方法里说明请求结束了,这个时候自然知道用户的这个操作是否成功了,根据主键更新下这条操作日志的是否成功字段。

ASP.NET MVC ActionFilter自定义过滤器异常过滤器过滤器用法相关推荐

  1. asp.net MVC之 自定义过滤器(Filter)

    一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration:缓存的时间,以秒为 ...

  2. Asp.Net MVC学习总结(三)——过滤器你怎么看?

    一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的逻辑.提供了一个简单而优雅的方式来实现横切关注点. 2.所谓的过滤器(Filters),MVC框架里 ...

  3. [ASP.NET MVC] 利用自定义的AuthenticationFilter实现Basic认证

    很多情况下目标Action方法都要求在一个安全上下文中被执行,这里所谓的安全上下文主要指的是当前请求者是一个经过授权的用户.授权的本质就是让用户在他许可的权限范围内做他能够做的事情,授权的前提是请求者 ...

  4. 【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链 (转)

    你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你的服务器带宽.下面这种方法可以告诉你如何在ASP.NET MVC中实现一个自定义Ro ...

  5. ASP.NET MVC: 使用自定义 ModelBinder 过滤敏感信息

    昨天发表了一篇随笔<ASP.NET MVC: 使用 Filters 附加过滤敏感信息功能>(以下简称<Filter过滤>),今天一早醒来发现一处重大漏洞,于是在发了一条评论指出 ...

  6. ASP.NET MVC - 设置自定义IIdentity或IPrincipal

    我需要做一些相当简单的事情:在我的ASP.NET MVC应用程序中,我想设置一个自定义IIdentity / IPrincipal. 哪个更容易/更合适. 我想扩展默认值,以便我可以调用User.Id ...

  7. asp.net mvc(十一)自定义view engine

    当创建一个asp.net mvc 1.0的项目后,在web工程中都会出现Views文件夹,这里面就是我们存放View Page或者是partial view的地方.而且系统对于Controller的名 ...

  8. ASP.NET MVC的Action拦截器(过滤器)ActionFilter

    有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.Filter ...

  9. ASP.NET MVC开发中常见异常及解决方案

    NHibernate:no persister for 异常 1.配置文件后缀名写错 mapping file 必须是.hbm.xml结尾 2.Web.config配置里面引用实体 <sessi ...

最新文章

  1. 并查集(压缩路径+按秩排序)
  2. 修改putty远程登录控制台的字体
  3. oracle中OEM证书失效怎么办,安全证书过期怎么办 网站安全证书失效处理【解决方法】...
  4. 基础知识(二)matlab与c++混合编程之经验笔记
  5. STM32_Systick学习及例程改写
  6. 使用javascript生成的植物显示过程特效
  7. Linux下的进程结构
  8. 乱谈SOA——IT世界观及方法论
  9. 什么是资产证券化 - 以及资产支持证券在实际中的应用
  10. 微信小程序——卡片列表显示listview(带阴影)
  11. excel基于一列的值统计另一列数值的个数
  12. 干货预警!自动化立体仓库电气安全设计
  13. 【数据结构】7-1 软硬车厢交替排列 (13 分)
  14. dede tag标签作用
  15. torch has an invalid wheel.
  16. 重邮2017年硕士研究生入学考试(《数据结构》802)自己做的部分答案
  17. 《你曾说,你喜欢篮球》
  18. 使用frp搭建自己的内网穿透
  19. Java日常打卡笔记05
  20. MATLAB生成随机点

热门文章

  1. 最优化作业第六章——共轭梯度法和鲍尔法
  2. python 计算器 eval ctf_CTF逆向--.NET与Python篇
  3. [Computation]集合、关系、语言
  4. [elk]elasticsearch dsl语句
  5. K-means算法和矢量量化
  6. HTML+CSS公司培训(一)高手请飘过
  7. C# 获取配置文件节点值
  8. JAVA学习资料整理
  9. UIScrollView实现不全屏分页的小技巧
  10. 属性页中的ON_UPDATE_COMMAND_UI