Разница между executeTimeout и Server.ScriptTimeout
У меня есть страница aspx, которая содержит код, который может занять 5 минут или более для выполнения на сервере. Поэтому мне нужно увеличить время до истечения времени запроса.
В чем разница между помещением этого в web.config для сайта:
<location path="~/MyPage.aspx">
<system.web>
<httpRuntime executionTimeout="600"/>
</system.web>
</location>
и поместив это в код на странице:
protected void Page_Load(object sender, EventArgs e)
{
Page.Server.ScriptTimeout = 600;
}
Ответы
Ответ 1
Что касается параметра executeTimeout для ASP.NET <httpRuntime>
конфигурация не работает проблема. Документация по этому атрибуту действительно не очень ясна. Проблема вызвана следующими причинами:
когда установлено значение "debug=true" mode
, среда выполнения игнорирует настройку таймаута.
- Даже мы установили
debug="false"
, у executeTimeout все еще есть
задержка, когда значение очень мало. Фактически, рекомендуется, чтобы мы не
установите тайм-аут менее 1,5 минут. И когда мы устанавливаем тайм-аут на меньшее
чем 1 минута, задержка будет составлять от 5 секунд до 15 секунд. Например,
если мы установим executeTimeout = "5", для страницы может потребоваться 15 секунд
to timeout.
Свойство Server.ScriptTimeout - это COM-интерфейс, который используется в классическом ASP. ИсполнениеTimeout из ASP.NET является заменой ScriptTimeout в asp.net, поэтому нам больше не нужно использовать ScriptTimeout в asp.net.
Кроме того, что касается
script ВСЕГДА заканчиваются через 2 секунды
Я боюсь, что в настройках времени asp.net нет никаких средств, поскольку
Управление обработкой запросов времени выполнения asp.net не может достичь этого уровня
точность, 2 секунды - слишком маленькое значение, которое может повысить производительность
очень пул для мониторинга такого небольшого интервала. Если нам нужно
определенный тайм-аут обработки, мы можем рассмотреть возможность использования логики тайм-аута в
выше уровня кода приложения. Например, если мы выполняем SqlCommand,
мы можем установить тайм-аут выполнения sqlcommand. Или, если мы выполняем
асинхронный вызов в коде страницы, мы можем установить тайм-аут для асинхронного вызова
Надежда помогает.
Ответ 2
На этой странице есть официальная информация:
https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.scripttimeout%28v=vs.110%29.aspx
Свойство ScriptTimeout может быть установлено в файле Web.configустанавливая атрибут executeTimeout этого элемента. Настройка тайм-аут программно с использованием свойства ScriptTimeout приоритет над настройкой Web.config.
Я просто подумал, что было бы полезно отметить, что Microsoft говорит, что "executeTimeout" является тем же свойством, что и "ScriptTimeout".
Ответ 3
ExecutionTimeout
Дополнительный атрибут TimeSpan.
Указывает максимальное количество секунд, в течение которых запрос может быть выполнен до автоматического отключения ASP.NET.
Этот тайм-аут применяется только в том случае, если атрибут debug в элементе компиляции False. Чтобы предотвратить остановку приложения во время отладки, не устанавливайте этот тайм-аут на большое значение.
Значение по умолчанию - "00:01:50" (110 секунд).
ScriptTimeout
По умолчанию ScriptTimeout можно установить для веб-службы или веб-сервера, используя свойство метабазы AspScriptTimeout. Свойство ScriptTimeout не может быть установлено на значение, меньшее значения, указанного в метабазе. Например, если для NumSeconds установлено значение 10, а параметр метабазы содержит значение по умолчанию 90 секунд, сценарии будут отключены через 90 секунд. Однако, если NumSeconds было установлено в 100, сценарии будут отключены через 100 секунд.