Установить ASP.net executeTimeout в коде / запросе "обновить"
У меня будет страница ASP.net, которая создает листы Excel и отправляет их пользователю. Проблема, иногда я получаю тайм-ауты Http, предположительно, потому что запрос выполняется дольше, чем executeTimeout (110 секунд по умолчанию).
Мне просто интересно, какие у меня есть варианты, чтобы предотвратить это, не желая вообще увеличивать ExecutionTimeout в web.config
?
В PHP set_time_limit
существует, который может быть использован в функции для продления ее жизни, но я не видел ничего подобного в C#/ASP.net?
Как вы обрабатываете долгосрочные функции в ASP.net?
2 ответа
Если вы хотите увеличить время ожидания для этого запроса, вы можете установить
HttpContext.Current.Server.ScriptTimeout
Но у вас все еще может быть проблема тайм-аута клиента, которую вы не можете надежно решить непосредственно с сервера. Чтобы обойти это, вы могли бы реализовать "обрабатывающую" страницу (как предлагает Роб), которая отправляет сообщения обратно, пока ответ не будет готов. Или вы можете захотеть заглянуть в AJAX, чтобы сделать что-то подобное.
Я сам пока не сталкивался с этой проблемой слишком много, так что, пожалуйста, имейте это в виду.
В любом случае вы можете запустить процесс асинхронно и указать метод обратного вызова, который будет выполнен после завершения, а затем сохранить страницу в цикле "мы обрабатываем ваш запрос...". Затем вы можете открыть это, чтобы добавить некоторые приятные улучшения пользовательского интерфейса.
Просто думаю вслух. Это, вероятно, будет то, что я хотел бы сделать:)