2009-02-04 5 views
1

Если вы подключены к Интернету напрямую (а не через прокси) и запрашиваете страницу (получение/публикацию) в Internet Explorer 7, время ожидания по умолчанию составляет 1 минуту. Если ответ с веб-сервера занимает больше минуты, вы получаете «сетевую ошибку» от IE.Как я могу сохранить запрос страницы IE более 1 минуты?

Как увеличить этот тайм-аут в IE?

Microsoft зарегистрировала How to change the default keep-alive time-out value in Internet Explorer, но это не работает на моем ПК (Windows XP SP2, IE 7.0).

Кто-нибудь знает, как это достичь?

Благодаря

+0

Действительно ли это вопрос программирования? – Niyaz

+0

Возможно, может и нет. Есть ли способ программирования, с помощью которого вы можете сохранить запрос до завершения полной обработки на сервере? –

ответ

0

Из той же статьи,

Если какой-либо браузер клиента (Internet Explorer) или веб-сервер имеет меньшее значение KeepAlive, это ограничивающим фактором. Например, если клиент имеет двухминутный тайм-аут и , веб-сервер имеет одноминутный тайм-аут , максимальный тайм-аут составляет один минут. Ограничивающим фактором может быть либо клиент, либо сервер .

Это может быть причиной того, что настройки не работают для вас.

+0

@Niyaz: Действительная точка, но я не получаю эту проблему при подключении через прокси. Страница возвращает OK через 3 минуты, и из этого мой вывод заключается в том, что тайм-аут веб-сервера в порядке. –

3

KB813827 говорит об HTTP 1.1 keepalives, которые связаны с сохранением TCP-соединения с сервером, открытым за пределами запроса. Это не то же самое, что и ваша проблема, которая поддерживает связь во время запроса. Чтобы настроить тайм-аут для каждого соединения, см. KB181050.

Предполагая, что угол программирования здесь является то, что вы пытаетесь написать серверный скрипт, который занимает много времени, чтобы закончить:

Чтобы избежать времени запроса, вы должны иметь возвращение сценария на стороне сервера что-то так часто, чтобы заверить браузер, что сервер не умер, и результат будет готов.

Как именно вы можете это сделать, зависит от того, какие серверные технологии вы используете. Все, что ждет весь корпус ответа и заголовки, которые будут заполнены, прежде чем отправлять что-либо обратно клиенту, отсутствует. Напр. CGI, вы можете вернуть тело ответа с помощью «Transfer-Encoding: chunked», чтобы выплескивать несколько байтов каждый так часто и поддерживать соединение живым.

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

+0

@bobince: на веб-сервере страница вызывает некоторые методы из сторонней системы, которая занимает много времени (более 60 секунд) для завершения. Я предполагаю, что ваше последнее утверждение - вот что я могу использовать здесь. Можно ли рекомендовать какие-либо образцы в Интернете с использованием аналогичного метода? –

+0

Какой язык программирования, веб-сервер?На сервере * nix вы можете удвоить fork для «daemonize» вашего длительного процесса из сценария или иметь бэкэнд-процесс обработки работы в фоновом режиме, с которым веб-скрипты могут разговаривать через сокет. – bobince

+0

Довольно старое веб-приложение; ASP/COM разговаривает с SAP RFC. SAP RFC - это трудоемкий процесс. –