Установить ASP.net executeTimeout в коде / запросе «обновить» - PullRequest
13 голосов
/ 27 августа 2008

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

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

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

Как вы справляетесь с долго работающими функциями в ASP.net?

Ответы [ 2 ]

14 голосов
/ 27 августа 2008

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

HttpContext.Current.Server.ScriptTimeout

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

1 голос
/ 27 августа 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...