我在ASP.NET MVC 3中构建了一个
JSON服务,我希望能够测量应用程序中的动作执行时间(我想要自动记录慢动作).
这样看起来很棒http://coderjournal.com/2010/10/timing-the-execution-time-of-your-mvc-actions/(这里也提到了堆栈溢出的地方)
问题是我从这种方法中得到的测量必须是错误的;
我添加了另一个秒表,启动了动作中的第一件事情,并在返回之前停止.
例:
>秒表里面的方法=> 10ms(序列化到json在这里省略,所以我可以明白,它比现实更短)
>秒表属性(上面的代码)=> 676ms
> Firefox表示请求=> 70ms
解决方法
这可能不是为什么它显示长执行时间的原因,但是当您一次有多个请求时,该属性将无法正常使用mvc 3.
In prevIoUs versions of ASP.NET MVC,
action filters are create per request
except in a few cases. This behavior
was never a guaranteed behavior but
merely an implementation detail and
the contract for filters was to
consider them stateless. In ASP.NET
MVC 3,filters are cached more
aggressively. Therefore,any custom
action filters which improperly store
instance state might be broken.
我建议在OnActionExecuting和save it to HttpContext.Current.Items
中实例化新的秒表 – 然后您可以在OnActionExecuted中检索它并打印出结果.