Вы подписываетесь на Application_BeginRequest
в своем Global.asax, вы помещаете текущую временную метку в HttpContext, а затем внутри OnActionExecuted
или любого другого значения, которое вы получаете из HttpContext, вычисляете новую временную метку и производите вычитание:
Global.asax:
protected void Application_BeginRequest(object sender, EventArgs e)
{
this.Context.Items["timestamp"] = DateTime.UtcNow;
}
OnActionExecuted:
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
DateTime initial = (DateTime)filterContext.HttpContext.Items["timestamp"];
DateTime current = DateTime.UtcNow;
long totalMilliseconds = (long)(current - initial).TotalMilliseconds;
...
}