2009-12-14 1 views
1

У меня есть веб-приложение ASP.NET, вызывающее веб-службу ASP.NET, которая сама сама вызывает отчет в службах отчетов, чтобы отчет сохранялся в файле. Все это должно подождать, пока не появится отчет, а затем верните цепочку с загружаемым pdf-отчетом.изменение тайм-аута страницы ASP.NET

Проблема заключается в том, что для генерации отчета требуется более 90 секунд, а страница в веб-приложении истекает, ожидая его возврата из вызова для генерации отчета. В конечном итоге отчет создается, но я хочу, чтобы страница продолжала его ждать.

Я попытался установить что-то в IIS7 под «ASP» 'Limits-Properties', называемое «Time Time», которое было с 1:30 до 5:00, но это не имеет никакого значения. Я сделал это как для своего веб-приложения, так и для веб-службы, но не думаю (может быть, неправильно), что ему нужно делать в службах отчетов, где я не могу найти настройки в любом случае, поскольку отчет всегда создается так, что сам по себе не является ошибкой.

Я также попытался изменить < httpRuntime maxRequestLength = «32768» ExecutionTimeout = «60000»/> установить 20000 миллисекунд, чтобы увидеть, если это тайм-ауту любой быстрее, и это снова не было никакого эффекта, что не удивительно, так как он собирался тогда, тайм-ауты должны были быть за 60 секунд, прежде чем я изменил его, а не 90.

Так как же его изменить, чтобы подождать дольше отчета?

ответ

1

Возможно, я ошибаюсь, но я боюсь, что тайм-аут установлен в клиентском браузере. Можете ли вы подойти к этому с другой точки зрения? то есть. вернуть страницу загрузки, которая обновляется каждые 5 секунд, пока отчет не будет готов?

+0

Я не могу найти настройки ни в Firefox 3.5, ни в IE8, но установка времени ожидания на сервере, разумеется, не делает этого трюка (независимо от того, является ли debug false или true - он говорит, что он должен быть ложным на http: // msdn .microsoft.com/en-us/library/e1f13641.aspx, но все равно никакого эффекта). Поэтому мы собираемся сделать страницу холдинга с проверкой фона, когда она будет готова, как было предложено. – Phil

1

Вы должны заглянуть в http://msdn.microsoft.com/en-us/library/e1f13641.aspx, чтобы изменить свой web.config и увеличить свою конфигурацию executionTimeout.

Это НЕ РЕШАЕТ Ваша проблема с длительным сроком поставки, возможно, это создает дополнительную проблему.

Вы можете попытаться создать асинхронный движок для обработки отчетов. Когда пользователь запрашивает отчет, поместите его в очередь MSMQ и фоновый процесс; когда вы это сделаете, отправьте электронное письмо с прилагаемым сообщением.

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

0

Ваш вызов в веб-сервис будет иметь таймаут. Убедитесь, что вы установили это значение в соответствующее значение, но было бы лучше иметь страницу загрузки, которая обновляется после того, как данные будут доступны.

0

Тайм-аут также может быть ограничен брандмауэром или прокси-сервером перед веб-сайтом.