1、建立一个TimingActionFilter过滤器

  1. public class TimingActionFilter : ActionFilterAttribute
  2. {
  3. public override void OnActionExecuting(ActionExecutingContext filterContext)
  4. {
  5. GetTimer(filterContext, "action").Start();
  6. base.OnActionExecuting(filterContext);
  7. }
  8. public override void OnActionExecuted(ActionExecutedContext filterContext)
  9. {
  10. GetTimer(filterContext, "action").Stop();
  11. base.OnActionExecuted(filterContext);
  12. }
  13. public override void OnResultExecuted(ResultExecutedContext filterContext)
  14. {
  15. var renderTimer = GetTimer(filterContext, "render");
  16. renderTimer.Stop();
  17. var actionTimer = GetTimer(filterContext, "action");
  18. if (actionTimer.ElapsedMilliseconds >= 100 || renderTimer.ElapsedMilliseconds >= 100)
  19. {
  20. LogHelper.WriteLog("运营监控(" + filterContext.RouteData.Values["controller"] + ")", String.Format(
  21. "【{0}】-【{1}】,执行:{2}ms,渲染:{3}ms",
  22. filterContext.RouteData.Values["controller"],
  23. filterContext.RouteData.Values["action"],
  24. actionTimer.ElapsedMilliseconds,
  25. renderTimer.ElapsedMilliseconds
  26. ));
  27. }
  28. base.OnResultExecuted(filterContext);
  29. }
  30. public override void OnResultExecuting(ResultExecutingContext filterContext)
  31. {
  32. GetTimer(filterContext, "render").Start();
  33. base.OnResultExecuting(filterContext);
  34. }
  35. private Stopwatch GetTimer(ControllerContext context, string name)
  36. {
  37. string key = "__timer__" + name;
  38. if (context.HttpContext.Items.Contains(key))
  39. {
  40. return (Stopwatch)context.HttpContext.Items[key];
  41. }
  42.  
  43. var result = new Stopwatch();
  44. context.HttpContext.Items[key] = result;
  45. return result;
  46. }
  47. }

  其中LogHelper.WriteLog是我的写日志文件通用类,修改成你自己的即可。

3、给controller或action加上特性

4、执行时间或渲染时间大于100ms会被记录下来

我这里有好几次执行时间7、800ms是因为每次重新生成项目,所以第一次会这么慢,这种不管它就是了:)

本文来自:http://www.itdos.com/Mvc/20150324/0126300.html 转载请保留此链接,谢谢!

C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间的更多相关文章

  1. 在MVC或WEBAPI中记录每个Action的执行时间和记录下层方法调用时间

    刚才在博客园看了篇文章,http://www.cnblogs.com/cmt/p/csharp_regex_timeout.html  突然联想到以前遇到的问题,w3wp进程吃光CPU都挂起IIS进程 ...

  2. ASP.NET MVC 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁

    在开发程序的过程中,稍微不注意就会隐含有sql注入的危险.今天我就来说下,ASP.NET mvc 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁.不用每下地方对参数的值都进行检 ...

  3. [转]ASP.NET MVC中的两个Action之间值的传递--TempData

    本文转自:ASP.NET MVC中的两个Action之间值的传递--TempData 一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在 ...

  4. C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  5. Python监控网站接口值

    Python监控网站接口值: #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'liudong' import urllib,sy ...

  6. C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  7. C#监控USB接口

    该C#代码实现监控USB接口是否有设备接入或拨出,包括多个U盘. using System; using System.IO; using System.Runtime.InteropServices ...

  8. MVC OR API的接口

    MVC OR WEBAPI的接口安全 当我们开发一款App的时候,App需要跟后台服务进行通信获取或者提交数据.如果我们没有完善的安全机制则很容易被别用心的人伪造请求而篡改数据.所以我们需要使用某种安 ...

  9. Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

    Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...

随机推荐

  1. PC端和手机访问调用不同的页面,JS和PHP不同方法

    js方法: var urlqr = location.href;    urlqr = urlqr.replace(/iphoneF_/, "pc")这里写正则替换页面地址 if( ...

  2. SDK截图程序(二):保存截图

    怎样将我们上一篇截取的位图保存在文件夹里.根据MSDN,思路是这样的,用CreateFile函数在磁盘建立一个bmp文件,用WriteFile填充该bmp文件的文件头.信息头,像素等信息.之前我们只有 ...

  3. Intent中的四个重要属性——Action、Data、Category、Extras

    Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的 ...

  4. 论文ei,sci检索,JCR-SCI分区,中科院分区连接

    https://jcr.incites.thomsonreuters.com/JCRJournalHomeAction.action?SID=B1-bQgax2FJ7EsyZ9muP6O5loc77S ...

  5. 【转】家庭wifi覆盖指导

    网址:家庭wifi覆盖指导 私以为,目前民用 wifi 路由器市场已经完全走上了邪路.天线越来越大,发射功率越做越高.都敢冒着法律的风险使用大大超过 100mW 的发射功率了.且不论巨大的发射功率可能 ...

  6. oracle执行计划之-表连接方式

    转载自:http://blog.csdn.net/tianlesoftware/article/details/5826546 在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的 ...

  7. UVA 101

    题意:四种操作把a和b所在的数字移动. lrj的思想很好.首先找到共同点.然后不必写四种操作.其次理解vector的方便. #include<iostream> #include<c ...

  8. UVA213 信息解码

    对于lrj的想法,真是太清晰.自己真的是很难去做到.贴此代码,加以练习,加以感悟. #include<cstdio> #include<cstring> ][<<] ...

  9. Ext.Net 学习随笔 002 默认按钮

    在FormPanel中按回车按键,会触发默认按钮的click事件.设置方法为在FormPanel中设置DefaultButton属性,如果没有设置这个属性,默认为最后一个按钮. 1.缺省最后一个按钮为 ...

  10. Network Alignment(网络比对)模型

      两类模型: 第一类:two-steps method 先计算两个网络之间每两个结点的相似性,再从N1*N2对相似性中抽取N1对匹配(N1<=N2). 代表算法:IsoRank 第二类:obj ...