gpt4 book ai didi

asp.net - 页面生成时间 - ASP.Net MVC

转载 作者:行者123 更新时间:2023-12-02 14:11:08 25 4
gpt4 key购买 nike

我正在寻找一种方法来跟踪服务器生成页面所需的时间。我知道我可以使用 Trace 来跟踪它,但我需要一种方法来每页显示它。

它的 ASP.Net MVC 2

最佳答案

您可以像 ActionFilterAttribute 一样实现它

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class LoggingAttribute : ActionFilterAttribute
{
private readonly Stopwatch _sw;

public LoggingAttribute()
{
_sw = new Stopwatch();
}

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
_sw.Start();
Debug.WriteLine("Beginning executing: " + GetControllerAndActionName(filterContext.ActionDescriptor));
}

public override void OnActionExecuted(ActionExecutedContext filterContext)
{
_sw.Stop();
var ms = _sw.ElapsedMilliseconds;

Debug.WriteLine("Finishing executing: " + GetControllerAndActionName(filterContext.ActionDescriptor));
Debug.WriteLine("Time elapsed: "+ TimeSpan.FromMilliseconds(ms).TotalSeconds);
}

private string GetControllerAndActionName(ActionDescriptor actionDescriptor)
{
return actionDescriptor.ControllerDescriptor.ControllerName + " - " + actionDescriptor.ActionName;
}
}

用它装饰每个 Controller 或操作方法,瞧,它会在调试中吐出文本。

编辑:如果您想在页面上打印它,您可以将此代码段添加到 OnActionExecuted 方法中

if(filterContext.Result is ViewResult) { //Make sure the request is a ViewResult, ie. a page
((ViewResult) filterContext.Result).ViewData["ExecutionTime"] = ms; //Set the viewdata dictionary
}

现在您已将执行时间保存在 ViewData 中,并且可以在页面中访问它。我通常将其放在母版页中,如下所示

<!-- The page took <%= ViewData["ExecutionTime"] %> ms to execute -->

关于asp.net - 页面生成时间 - ASP.Net MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com