2012-02-22 73 views
0

如何在.NET Asp MVC中开始页面请求时获取页面请求的初始时间戳?我想比较Timestamp到一个Action的开始,然后再次作为OnActionExecuted,看看我的应用程序在开始响应“head”元素之前花费的时间在哪里,它同时执行模型和数据请求正在处理中。有什么建议么?如何在.NET Asp MVC中开始页面请求时获取页面请求的初始时间戳?

+1

看起来像的复制品http://stackoverflow.co m/questions/148384/how-do-i-inspect-the-asp-net-request-pipeline – 2012-02-22 22:32:43

+0

谢谢,这绝对有用,之前我曾经使用过,但之后就被遗忘了。但是,我期待在.NET接管之前,在HttpModules之前获得时序,然后通过模块进行计时,然后在执行Action时进行计时。这应该给我一个想法,如果在管道中的任何HttpModules是造成问题。我在思考一个isapi过滤方法 - 在做了更多的研究之后。 – lucidquiet 2012-02-23 07:54:04

+0

在这种情况下,您的问题与Web服务器有关,而不是.net技术。 – 2012-02-23 22:23:32

回答

2

你在你的Global.asax订阅Application_BeginRequest,你把当前时间戳到的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; 
    ... 
} 
相关问题