Как рассчитать истекшее время выполнения действия в MVC - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу рассчитать затраченное время на любое действие и сохранить его в базе данных.я не использую секундомер во всех действиях.

Я ищу способ, который можно применить ко всему проекту asp.net MVC, другими словами. Есть ли событие, которое происходит при каждом выполнении действия?.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Использование MiniProfiler , от создателей StackOverflow.Очень прост в использовании и по умолчанию дает такие измерения, как выполнение действий контроллера.

0 голосов
/ 26 апреля 2018

Вы должны сделать что-то вроде этого.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());
    }
}
Вы должны сделать Как вставить данные в БД.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...