gpt4 book ai didi

c# - 如何计算MVC中执行 Action 的耗时

转载 作者:行者123 更新时间:2023-11-30 15:16:17 25 4
gpt4 key购买 nike

我想计算任何 Action 的耗时并将其保存在数据库中。我不会在所有操作中使用秒表。

我正在寻找一种可以应用于整个asp.net MVC项目的方法换句话说,每次执行一个 Action 都会发生一个事件?

最佳答案

你必须做这样的事情。1. 创建过滤器。

public class ActionExecutionTimeAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Items["ActionName"] = filterContext.HttpContext.Request.RawUrl;
filterContext.HttpContext.Items["StartTime"] = DateTime.UtcNow;
base.OnActionExecuting(filterContext);
}
// Do this to calculate only Action Execution Time
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
DateTime startTime = (DateTime)filterContext.HttpContext.Items["StartTime"];
System.Diagnostics.Debug.WriteLine(filterContext.HttpContext.Items["ActionName"].ToString() + "-" + (DateTime.UtcNow - startTime).TotalMilliseconds);
}
// Do this to calcution of Action Start to Result Process
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
DateTime startTime = (DateTime)filterContext.HttpContext.Items["StartTime"];
System.Diagnostics.Debug.WriteLine(filterContext.HttpContext.Items["ActionName"].ToString() + "- (R)" + (DateTime.UtcNow - startTime).TotalMilliseconds);
}
}

2。在 Global.asax 中注册

public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new ActionExecutionTimeAttribute());
}
}
  1. 您必须了解如何在数据库中插入数据。

关于c# - 如何计算MVC中执行 Action 的耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50035363/

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