Action执行时间过滤器
public class AccessStatisticsAttribute : ActionFilterAttribute
{
/// <summary>
/// log4net 日志
/// </summary>
private static readonly ILog Logger = LogManager.GetLogger(typeof(AccessStatisticsAttribute)); /// <summary>
/// 该Action对应的权限项名称
/// </summary>
private readonly string _actionName; /// <summary>
/// 该Action对应的权限项名称
/// </summary>
private readonly bool _logResult; /// <summary>
/// .ctor
/// </summary>
public AccessStatisticsAttribute(string actionName, bool logTheResult = false)
{
this._actionName = actionName;
this._logResult = logTheResult;
} /// <summary>
/// 提供一个入口点用于进行自定义授权检查
/// </summary>
/// <param name="filterContext">HTTP 上下文,它封装有关单个 HTTP 请求的所有 HTTP 特定的信息。</param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
GetSessionTimer(filterContext).Start();
base.OnActionExecuting(filterContext);
} /// <summary>
/// OnActionExecuted
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var stopwatch = GetSessionTimer(filterContext);
stopwatch.Stop();
var result = this._logResult ? filterContext.Result.ToJsonNoneFormat() : string.Empty; if (stopwatch.Elapsed.TotalMilliseconds > ActionHelper.ElapsedMillisecondsLimit)
{
Logger.InfoFormat("OUT : {0} {1} {2}ms {3}s", _actionName, result, (uint)stopwatch.Elapsed.TotalMilliseconds, (uint)stopwatch.Elapsed.TotalSeconds);
} base.OnActionExecuted(filterContext);
} private Stopwatch GetSessionTimer(ControllerContext context, string name = "actionElapse")
{
string key = name + "timer";
if (context.HttpContext.Items.Contains(key))
{
return (Stopwatch)context.HttpContext.Items[key];
} var result = new Stopwatch();
context.HttpContext.Items[key] = result;
return result;
}
}
Action执行时间过滤器的更多相关文章
- MVC源码分析 - Action/Result 过滤器(续)
上一篇 看到了Action/Result过滤器的执行顺序: OnActionExecuting -> Action -> OnActionExecuted -> OnResultEx ...
- MVC中使用Action全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法
前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...
- MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用
前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...
- MVC源码分析 - Action/Result 过滤器执行时机
前面 的篇章, 解析了Action方法的查找, 以及 Authorize, Action, Result, Error 过滤器的加载时机. 也花了两篇去看授权和错误过滤器的使用. 但是对于 Actio ...
- .NET MVC 在action中,过滤器中,或视图中,如何分别获取 当前请求的 控制器/视图/区域 的名字
1)过滤器中的: public class CMSAttribute : FilterAttribute, IAuthorizationFilter { public void OnAuthoriza ...
- 记录每个action执行时间
import org.apache.commons.lang.time.StopWatch; import org.aspectj.lang.JoinPoint; import org.aspectj ...
- 控制器,action, 过滤器, 权限
这个是重点学习对象 控制器 https://www.cnblogs.com/caoyc/p/5671687.html 还有这个 https://www.cnblogs.com/leoo2sk/arc ...
- Asp.Net Mvc Action过滤器(二)
在Mvc中为Action添加过滤器,有两种方式, 一.使用ActionFilterAttribute,简单方式,同时支持Result的过滤处理, 1.可以为空,支持的重写:OnActionExecut ...
- asp.net core MVC 过滤器之ActionFilter过滤器(二)
本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter过滤器(一) asp.net core ...
随机推荐
- Linux pkg-config命令
一.简介 pkg-config用来检索系统中安装库文件的信息.典型的是用作库的编译和连接. 二.实例 http://blog.chinaunix.net/uid-20595934-id-1918368 ...
- WebDriverWait等设置等待时间和超时时间
1.显示等待 等待页面加载完成,找到某个条件发生后再继续执行后续代码,如果超过设置时间检测不到则抛出异常 WebDriverWait(driver, timeout, poll_frequency=0 ...
- linux信号基本概念及如何产生信号
linux信号基本概念及如何产生信号 摘自:https://blog.csdn.net/summy_j/article/details/73199069 2017年06月14日 09:34:21 阅读 ...
- 黑盒测试实践-小组任务分配和安排-Day01
实践作业2:黑盒测试实践 小组成员 组长:华同学 成员:覃同学.沈同学.刘同学.郭同学.穆同学 任务分解 任务1:分析系统需求 参考软件需求规格说明书模板描述系统需求.如果系统功能特别多,特别复杂,则 ...
- FutureTask子任务取消执行的状态判断
示例代码可以从github上获取 https://github.com/git-simm/simm-framework.git 一.业务场景: 系统中存在多种场景并发操作事务执行时互锁的情况,导致任务 ...
- 单个控件textbox只支持在英文状态下输入所需的字符串
也就是它的属性: Imemode的属性 设置成off就可以了 ,就不会受到所输入的中文汉字了.
- 汉字转拼音类EcanConvertToCh
/// <summary> /// 汉字转拼音类 /// </summary> public class EcanConvertToCh { //定义拼音区编码数组 priva ...
- 在云主机后台进行python程序运行
nohup python main.py & nohup liunx自带的命令 注意:后面(&)!
- Android Butterknife框架 注解攻略
一.原理. 最近发现一个很好用的开源框架,蛮不错的,可以简化你的代码,是关于注解的.不多说直接进入使用步骤讲解. 二.步骤. 1.准备阶段,先到官网( http://jakewharton.githu ...
- javascript js自执行函数
javascript 自执行函数 一.自执行函数几种写法: 写法一: ( function(){ //代码 } )(); 写法二: ( function(){ //代码 }()); 二.作用: 隔离 ...