Где запустить секундомер и где он должен остановиться?
Логичным местом для запуска секундомера должен быть метод действия контроллера, да, нет?
Но где должны останавливаться часы? Я хотел бы думать, что это идет в конце мастер-страницы? Нет смысла останавливать часы в конце метода действия контроллера, потому что в представлении будет выполняться дополнительный процесс для отображения страницы.
Любые мысли?
РЕДАКТИРОВАТЬ: я намерен использовать прошедшее время на главной странице, чтобы я мог получить время для любой веб-страницы.
Дарин: Спасибо за пример кода. Но образец не работает, как я ожидал. Я планировал использовать прошедшее время на главной странице, чтобы его можно было записать на каждую страницу.
Итак, я думаю, что главная страница уже будет загружена к моменту выполнения EndRequest?
В моем EndRequest я установил:
Context.Items["PageCreationTime"] = watch.ElapsedMilliseconds.ToString();
Тогда я не могу получить ссылку на свою мастер-страницу:
<%= HttpContext.Current.Items["PageCreationTime"].ToString()%>
2 ответа
Application.BeginRequest и Application.EndRequest являются хорошими кандидатами.
protected void Application_BeginRequest(object sender, EventArgs e)
{
Stopwatch watch = Stopwatch.StartNew();
Context.Items["watch"] = watch;
}
protected void Application_EndRequest(object sender, EventArgs e)
{
Stopwatch watch = (Stopwatch)Context.Items["watch"];
watch.Stop();
// Do something with the results like for example:
Context.Response.Write(watch.ElapsedMilliseconds);
}