2009-08-23 116 views
0

我在Windows調度程序中使用vbscript .vbs。vbscript返回空數據

示例代碼:

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的弱點是什麼? 幫助!

回答

2

您可以指定WinHTTP的組件超時:

objWinHttp.SetTimeouts 5000, 10000, 10000, 10000 

它需要4個參數:ResolveTimeout,ConnectTimeout,的SendTimeout和ReceiveTimeout。所有4個都是必需的,用毫秒錶示(1000 = 1秒)。的缺省值是:

  • ResolveTimeout:零(無超時)
  • ConnectTimeout:60000(一分鐘)
  • 的SendTimeout:30,000(30秒)
  • ReceiveTimeout:(30秒)30000

所以我建議增加ReceiveTimeout

+0

塔難怪,我意識到vbs的返回響應總是在30秒左右。你的解決方案有效 – 2009-08-23 16:36:29

0

什麼是objHTTP特別?

看目標服務器的日誌,是收到請求?

+0

設置objWinHttp =的Server.CreateObject( 「WinHttp.WinHttpRequest.5.1」) – Fionnuala 2009-08-23 15:06:52

0

我不能在服務器日誌中找到這。

objWinHTTP是發送呼叫並等待響應的標準協議。

我曾嘗試使用PHP和curl來完成整個過程,但失敗了。原因:PHP是Windows服務器組件的一部分。當來到全局特權和文件夾移動時,它由Windows服務器控制。所以我放棄了,並使用vbs。

objWinHTTP就像PHP中的捲曲一樣。

0

對我來說聽起來像是要花太長的時間完成和服務器超時的請求。我相信asp腳本的默認超時時間爲90秒,因此您可能需要在IIS或腳本中調整此值,以便服務器在超時之前等待更長時間。

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

的AspScriptTimeout財產 指定(以秒爲單位)默認 長的時間ASP頁面允許 腳本終止 劇本,寫一個事件 Windows之前運行事件日誌。 ASP腳本可以通過使用ASP 內置Session對象的 ScriptTimeout屬性覆蓋此值 。 ScriptTimeout屬性允許您的ASP 應用程序設置更高的腳本 超時值。例如,您可以使用此設置來調整超時時間 ,一旦特定用戶通過登錄建立 有效會話或訂購產品時, 。