Вопрос

Я использую vbscript .vbs в планировщике Windows.

Пример кода:

objWinHttp.Open "POST", http://bla.com/blabla.asp, false
objWinHttp.Send 
CallHTTP= objWinHttp.ResponseText

strRESP= CallHTTP(strURL)

WScript.Echo "after doInstallNewSite: " & strRESP

Проблема:blabla.asp выполняет задачу, на выполнение которой требуется около 1-2 минут.Он должен вернуть "успех", когда задача будет выполнена.Но он возвращает пустой результат на сервер vbs.(короче обычного времени для завершения работы.Затем я иду проверить, выполнено ли задание, ответ тоже "да".

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

Является ли это слабостью vbs?Помогите!!!

Это было полезно?

Решение

Вы можете указать тайм-ауты для компонента winhttp:

objWinHttp.SetTimeouts 5000, 10000, 10000, 10000

Он принимает 4 параметра:Разрешите timeout, ConnectTimeout, SendTimeout и receiveTimeout.Все 4 являются обязательными и выражаются в миллисекундах (1000 = 1 секунда).Значения по умолчанию следующие:

  • Время выхода разрешения:ноль (без тайм-аута)
  • Время выхода соединения:60 000 (одна минута)
  • Время отправки истекает:30 000 (30 секунд)
  • Время ожидания приема истекло:30 000 (30 секунд)

Поэтому я предлагаю увеличить время получения

Другие советы

Что конкретно такое objHTTP?

Просматривая журнал целевого сервера, был ли получен запрос?

Я не могу найти это в журнале сервера.

objWinHTTP - это стандартный протокол для отправки вызова и ожидания ответа.

Я действительно пытался использовать PHP и curl для выполнения всего процесса, но потерпел неудачу.Причина:PHP является частью компонента в Windows server.Когда дело доходит до глобальных привилегий и перемещения папки с файлами, это контролируется Windows server.Так что я сдаюсь и использую vbs.

objWinHTTP - это что-то вроде curl в PHP.

мне кажется, что выполнение запроса на занимает слишком много времени, и у сервера истекает время ожидания.Я полагаю, что тайм-аут по умолчанию для скриптов asp составляет 90 секунд, поэтому вам может потребоваться настроить это значение в IIS или в вашем скрипте, чтобы сервер дольше ждал до истечения времени ожидания.

От http://msdn.microsoft.com/en-us/library/ms525225.aspx:

Свойство AspScriptTimeout задает (в секундах) значение по умолчанию продолжительность времени, которое страницы ASP позволяют сценарию выполняться до завершения работы сценария и записи события в Журнал событий Windows.Скрипт ASP может переопределить это значение с помощью свойства ScriptTimeout ASP встроенного объекта сеанса.Свойство ScriptTimeout позволяет вашему ASP приложению устанавливать более высокое значение тайм-аута скрипта .Например, вы можете использовать этот параметр для настройки времени ожидания после того, как конкретный пользователь установит допустимый сеанс, войдя в систему или заказав продукт.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top