题
我在 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的弱点吗?帮助!!!
解决方案
您可以为 winhttp 组件指定超时:
objWinHttp.SetTimeouts 5000, 10000, 10000, 10000
它需要 4 个参数:ResolveTimeout、ConnectTimeout、SendTimeout 和 ReceiveTimeout。所有 4 个都是必需的,并以毫秒表示(1000 = 1 秒)。默认值是:
- 解决超时:零(无超时)
- 连接超时:60,000(一分钟)
- 发送超时:30,000(30 秒)
- 接收超时:30,000(30 秒)
所以我建议增加 ReceiveTimeout
其他提示
什么是objHTTP具体?
寻找在目标服务器的日志,是接收到的请求?
我无法在服务器日志中找到它。
objWinHTTP是一个标准的协议来发送呼叫并等待响应。
我曾尝试使用PHP和卷曲做的全过程,但未能成功。原因:PHP是在Windows Server组件的一部分。当来到全局权限和文件夹移动,它是由Windows服务器控制。所以我放弃了,用VBS。
objWinHTTP东西行为像在PHP卷曲。
像请求的时间太长,完成并且服务器超时声音,我。我相信ASP脚本默认的超时时间为90秒,所以你可能需要在IIS或脚本来调整这个值,这样服务器在超时之前等待更长的时间。
从 http://msdn.microsoft.com/en-us/库/ ms525225.aspx :
在AspScriptTimeout属性 指定(以秒计)的默认 时间长度ASP页面允许 脚本终止前运行 剧本,写一个事件 Windows事件日志。 ASP脚本可以 通过使用覆盖此值 在ASP的ScriptTimeout属性 内置的Session对象。该 ScriptTimeout属性可以让你的ASP 应用提出了更高的脚本 超时值。例如,你可以 使用此设置来调整超时 一旦特定用户建立 通过记录有效的会话或 订购产品。