Установить ASP.net executeTimeout в запросе кода/обновления

У меня будет страница ASP.net, которая создаст некоторые листы Excel и отправит их пользователю. Проблема в том, что иногда я получаю тайм-ауты Http, по-видимому, потому, что запрос работает дольше, чем executeTimeout (110 секунд по умолчанию).

Мне просто интересно, какие у меня варианты, чтобы предотвратить это, не желая вообще увеличивать исполнениеTimeout в web.config?

В PHP существует set_time_limit, который может использоваться в функции, чтобы продлить ее жизнь, но я не видел ничего подобного в С#/ASP.net?

Как вы обрабатываете долговременные функции в ASP.net?

Ответ 1

Если вы хотите увеличить время выполнения для этого одного запроса, вы можете установить

HttpContext.Current.Server.ScriptTimeout

Но у вас все еще может возникнуть проблема с тайм-аутом клиента, который вы не можете надежно решить напрямую с сервера. Чтобы обойти это, вы могли бы реализовать страницу "обработки" (например, предлагает Rob), которая отправляется обратно до тех пор, пока ответ не будет готов. Или вы можете посмотреть в AJAX, чтобы сделать что-то подобное.

Ответ 2

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

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

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