0

我在 Windows 调度程序中使用 vbscript .vbs。

示例代码:

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的弱点吗?帮助!!!

4

4 回答 4

2

您可以为 winhttp 组件指定超时时间:

objWinHttp.SetTimeouts 5000, 10000, 10000, 10000

它需要 4 个参数:ResolveTimeout、ConnectTimeout、SendTimeout 和 ReceiveTimeout。所有 4 个都是必需的,以毫秒表示(1000 = 1 秒)。默认值为:

  • ResolveTimeout:零(没有超时)
  • ConnectTimeout:60,000(一分钟)
  • 发送超时:30,000(30 秒)
  • 接收超时:30,000(30 秒)

所以我建议增加 ReceiveTimeout

于 2009-08-23T15:32:14.197 回答
0

objHTTP 具体是什么?

查看目标服务器的日志,是否收到请求?

于 2009-08-23T14:50:52.520 回答
0

我在服务器日志中找不到这个。

objWinHTTP 是发送调用并等待响应的标准协议。

我确实尝试使用 PHP 和 curl 来完成整个过程,但失败了。原因:PHP 是 windows server 中组件的一部分。全局权限和文件夹移动时,由windows server控制。所以我放弃了,用vbs。

objWinHTTP 类似于 PHP 中的 curl。

于 2009-08-23T15:04:25.540 回答
0

在我看来,请求完成的时间太长,服务器超时。我相信 asp 脚本的默认超时时间是 90 秒,因此您可能需要在 IIS 或脚本中调整此值,以便服务器在超时之前等待更长时间。

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

AspScriptTimeout 属性指定(以秒为单位)在终止脚本并将事件写入 Windows 事件日志之前 ASP 页允许脚本运行的默认时间长度。ASP 脚本可以通过使用 ASP 内置 Session 对象的 ScriptTimeout 属性来覆盖该值。ScriptTimeout 属性允许您的 ASP 应用程序设置更高的脚本超时值。例如,一旦特定用户通过登录或订购产品建立有效会话,您就可以使用此设置来调整超时。

于 2009-08-23T15:10:47.260 回答