Установить 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 и указать метод обратного вызова, который должен произойти после завершения, а затем сохранить страницу в цикле цикла "мы обрабатываем ваш запрос..". Затем вы можете открыть это, чтобы добавить некоторые приятные улучшения пользовательского интерфейса.
Просто любопытное мышление вслух. Это, вероятно, было бы тем, что я хотел бы сделать:)