在ASP.NET MVC 3中,如何使用OnResultExecuting / OnresultExecuted方法跟踪页面加载时间?

时间:2011-07-15 15:37:47

标签: asp.net-mvc-3

我在我的控制器中放入OnResultExecuting / OnResultExecuted代码并在web.config中启用了跟踪,但是控制器的任何页面上都没有显示有关跟踪信息的内容(我刚刚获得了原始页面,附加了trace.axd没有工作要么!)

启用跟踪的web.config:

<system.web><trace enabled="true" pageOutput="true" requestLimit="40" localOnly="false"/></system.web>

OnResultExecuting / OnResultExecuted:

protected override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        string controller = filterContext.RouteData.Values["controller"].ToString();
        string action = filterContext.RouteData.Values["action"].ToString();
        start_time = DateTime.Now;
        System.Diagnostics.Trace.Write(string.Format("Start '{0}/{1}' on: {2}", controller, action, start_time));
    }

    protected override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        string controller = filterContext.RouteData.Values["controller"].ToString();
        string action = filterContext.RouteData.Values["action"].ToString();
        var elapsed_time = DateTime.Now - start_time;
        System.Diagnostics.Trace.Write(string.Format("Start '{0}/{1}' on: {2}", controller, action, elapsed_time));
    }

2 个答案:

答案 0 :(得分:1)

改为使用actionfilter。我在here上粘贴了一些代码。

ActionFilters更易于重用,可以全局实施。

答案 1 :(得分:0)

你知道mvc mini profiler - http://code.google.com/p/mvc-mini-profiler/

吗?

这是由sam saffron撰写的,他开发了这个网站。

听起来它可能已经做了你想要实现的目标