美文网首页
asp.net mvc 获取页面执行时间的类的代码

asp.net mvc 获取页面执行时间的类的代码

作者: hahamama | 来源:发表于2018-12-22 16:26 被阅读0次

开发期间,将开发过程中常用的内容做个收藏,如下内容内容是关于asp.net mvc 获取页面执行时间的类的内容,希望对各朋友有些用。

[csharp] view plaincopy

public class PerformanceActionAttributeFilter : ActionFilterAttribute 

    public string Message { get; set; } 

    public override void OnActionExecuted(ActionExecutedContext filterContext) 

    { 

        GetTimer(filterContext, "action").Stop(); 

        base.OnActionExecuted(filterContext); 

    } 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 

    { 

        GetTimer(filterContext, "action").Start(); 

        base.OnActionExecuting(filterContext); 

    } 

    public override void OnResultExecuted(ResultExecutedContext filterContext) 

    { 

        var renderTimer = GetTimer(filterContext, "render"); 

        renderTimer.Stop(); 

        var actionTimer = GetTimer(filterContext, "action"); 

        var response = filterContext.HttpContext.Response; 

        if (response.ContentType == "text/html") 

        { 

            response.Write( 

                String.Format( 

                    "<p>Action '{0} :: {1}', Execute: {2}ms, Render: {3}ms.</p>", 

                    filterContext.RouteData.Values["controller"], 

                    filterContext.RouteData.Values["action"], 

                    actionTimer.ElapsedMilliseconds, 

                    renderTimer.ElapsedMilliseconds 

                ) 

            ); 

        } 

        base.OnResultExecuted(filterContext); 

    } 

    public override void OnResultExecuting(ResultExecutingContext filterContext) 

    { 

        GetTimer(filterContext, "render").Start(); 

        base.OnResultExecuting(filterContext); 

    } 

    private Stopwatch GetTimer(ControllerContext context, string name) 

    { 

        string key = "__timer__" + name; 

        if (context.HttpContext.Items.Contains(key)) 

        { 

            return (Stopwatch)context.HttpContext.Items[key]; 

        } 

        var result = new Stopwatch(); 

        context.HttpContext.Items[key] = result; 

        return result; 

    } 

2)在Controller中添加描述

[PerformanceActionAttributeFilter(Message ="controller")] 

public class HomeController : Controller 

    [PerformanceActionAttributeFilter(Message = "action")] 

    public ActionResult Index() 

    {   

        return View(); 

    } 

    public ActionResult About() 

    { 

        return View(); 

    } 

相关文章

网友评论

      本文标题:asp.net mvc 获取页面执行时间的类的代码

      本文链接:https://www.haomeiwen.com/subject/onoikqtx.html