vbscript restituire i dati vuoti
Domanda
Sono usando vbs VBScript in pianificazione di Windows.
Codice di esempio:
objWinHttp.Open "POST", http://bla.com/blabla.asp, false
objWinHttp.Send
CallHTTP= objWinHttp.ResponseText
strRESP= CallHTTP(strURL)
WScript.Echo "after doInstallNewSite: " & strRESP
Problema: blabla.asp sta gestendo un'operazione che ha bisogno intorno 1-2 minuti per completare. Esso dovrebbe restituire 'successo' quando l'operazione completata. Ma restituisce un risultato vuoto per i VBS server. (Più breve del tempo normale per completare la cosa. Ho poi vado a controllare se l'operazione è completata, la risposta è sì anche.
Ho trovato questo accada quando l'attività ha bisogno di più tempo per completare.
E 'questo il punto debole di VBS? Aiuto !!!
Soluzione
È possibile specificare i timeout per il componente winhttp:
objWinHttp.SetTimeouts 5000, 10000, 10000, 10000
Ci vuole 4 parametri: ResolveTimeout, ConnectTimeout, SendTimeout e ReceiveTimeout. Tutti 4 sono necessari e sono espressi in millisecondi (1000 = 1 secondo). Le impostazioni predefinite sono:
- ResolveTimeout: zero (nessun time out)
- ConnectTimeout: 60.000 (un minuto)
- SendTimeout: 30.000 (30 sec.)
- ReceiveTimeout: 30.000 (30 sec.)
Quindi suggerisco aumentare il ReceiveTimeout
Altri suggerimenti
Qual è objHttp specifico?
Guardando log del server di destinazione, è stata la richiesta ricevuta?
Non riesco a trovare questo in log del server.
objWinHTTP è un protocollo standard per inviare chiamata e attendere la risposta.
Ho provato con PHP e curl per fare tutto il processo, ma non è riuscito. Motivo: PHP è parte del componente di server Windows. Quando vieni a privilegiare globale e cartella di file in movimento, che è controllata dal server Windows. Così mi arrendo, e utilizzare VBS.
objWinHTTP è qualcosa di agire come ricciolo in PHP.
Sembra a me come la richiesta di sta impiegando troppo tempo per completare e il server è timeout. Credo che il timeout predefinito per gli script ASP è di 90 secondi, quindi potrebbe essere necessario regolare questo valore in IIS o nel vostro script in modo che il server attendere più a lungo prima del timeout.
http://msdn.microsoft.com/en-us/ biblioteca / ms525225.aspx :
La proprietà AspScriptTimeout specifica (in secondi) di default lunghezza del tempo che pagine ASP consentono un l'esecuzione di script prima di terminare la sceneggiatura e scrittura di un evento al Registro eventi di Windows. script ASP può sovrascrivere questo valore utilizzando il Proprietà ScriptTimeout dell'ASP incorporato nell'oggetto Session. Il Proprietà ScriptTimeout consente al ASP applicazione per impostare uno script più alto valore di timeout. Ad esempio, è possibile utilizzare questa impostazione per regolare il timeout una volta un particolare utente stabilisce un sessione valida per la registrazione o ordine di un prodotto.