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

标签 c# asp.net-mvc

我想计算任何 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/

相关文章:

javascript - 使用 MVC 在 googlemap 上创建多边形并将结果保存到数据库

javascript - 使用 Javascript/jQuery 动态填充下拉列表

html - Bootstrap 表单上传文件布局

c# - 如何创建在用户设置的特定日期和时间弹出的WPF C#应用程序?

c# - 我应该如何正确测试 IoC 服务?

c# - foreach 循环抛出空异常但对象不是

asp.net-mvc - Asp.net MVC/Silverlight 和 Sharepoint 2010 集成

java - Android 应用程序问题 - 如何在 Play 商店中加载应用程序条目

c# - Entity Framework 和数据库连接

c# - 如何将我的选择值存储到 session 变量中?