Установить 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, чтобы сделать что-то подобное.

Я сам пока не сталкивался с этой проблемой слишком много, так что, пожалуйста, имейте это в виду.

В любом случае вы можете запустить процесс асинхронно и указать метод обратного вызова, который будет выполнен после завершения, а затем сохранить страницу в цикле "мы обрабатываем ваш запрос...". Затем вы можете открыть это, чтобы добавить некоторые приятные улучшения пользовательского интерфейса.

Просто думаю вслух. Это, вероятно, будет то, что я хотел бы сделать:)

Другие вопросы по тегам