Как вы можете время запросов с ASP.NET MVC? - PullRequest
3 голосов
/ 04 января 2011

Я знаком с использованием HttpModule для определения времени запросов, но они на самом деле не подключаются к системе просмотра ASP.NET MVC. Можно ли это сделать, запустив таймер где-нибудь в global.asax, а затем получив доступ к нему в _layout.cshtml?

Ответы [ 2 ]

3 голосов
/ 04 января 2011

1) Вы можете проверить время начала и время окончания запроса в событиях Begin_Request и End_Request класса приложения 2) Вы можете определить пользовательский HttpModule 3) Вы можете определить пользовательский атрибут следующим образом:

public class RequestTimerAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //Mark the Start Time 
                MarkTime("Start");
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        //Mark the Start Time 
                MarkTime("End");
    }

    void MarkTime(string EventName)
    {
        //Handle the logic here to log the time 
    }        
}
1 голос
/ 04 января 2011

Я использую метод контроллера Initialize, чтобы установить флаг в HttpContext.Items:

HttpContext.Items["StartTime"] = DateTime.Now;

Затем распечатайте его по своему усмотрению или где угодно:

<%
// We only set this in DEBUG builds
var startTime = HttpContext.Current.Items["StartTime"] as DateTime?
if(startTime.HasValue)
{ %>
    <%=(DateTime.Now - startTime.Value).TotalSeconds.ToString("0.00000")%> seconds
<%
}
%>
...