В ASP.NET 4.5.2, в web.config, мы устанавливаем значение executeTimeout меньше значения времени ожидания по умолчанию:
Я протестировал страницу с помощьюSystem.Threading.Thread.Sleep (600000);и я вижу, что время ожидания истекает через 90 секунд.
В нашем реальном приложении мы синхронизируем выполнение наших страниц с помощью Application_EndRequest () в Global.asax:
void Application_EndRequest()
{
double timeElapsed = DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalSeconds;
using (System.Data.SqlClient.SqlConnection cs = DB.LMSAdminConn())
{
cs.Open();
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("EXEC logpageexecutiontime @pagename, @executiontime", cs))
{
cmd.Parameters.Add("@pagename", System.Data.SqlDbType.VarChar).Value = thisURL;
cmd.Parameters.Add("@executiontime", System.Data.SqlDbType.Float).Value = timeElapsed;
}
}
}
Это кажетсячтобы получить точное время загрузки страницы, но иногда регистрируется время загрузки страницы, которое намного превышает время ожидания скрипта.У нас бывают периоды производства, когда внезапно время загрузки страницы будет очень высоким, до 1000 секунд или более.Мы используем более высокий Server.ScriptTimeout на некоторых страницах, но не на страницах, которые имеют большое время загрузки, записанное в базе данных.И Server.ScriptTimeout является локальным по объему и применяется только к текущему запросу.Я дважды проверил, и debug = false.
Насколько я понял, с httpRuntime executeTimeout 90 секунд ни одна страница не будет работать дольше 90 секунд - они будут прерваны.Итак, почему вы думаете, что мы видим время загрузки записанной страницы намного выше значения executeTimeout?