2013-03-04 74 views
0

在我们的Windows应用程序中,我们使用BITS上传协议(使用upload-reply)将文件上传到我们的服务器,对待它们并等待响应。 有时服务器的细化可能会很长(> = 10分钟),我们会遇到超时问题。BITS上传响应超时

根据该文件http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/[MC-BUP].pdf

3.1.2.2上传响应超时定时器限制采取用于接收从任何 服务器不论所涉及的状态转换的2.2节中提到的反应的的时间量。默认 的值是5分钟;法律范围是任何正价值。

有没有办法改变默认值5分钟?我如何设置更高的价值?

谢谢。

+0

因此,客户端正在等待服务器响应超时。你是编码服务器还是编码客户端?如果客户使用哪种API(如果有的话)? – 2013-03-12 10:40:32

+0

我使用我们的专有语言编写客户端,我只能使用BITSADMIN.exe命令行来驱动BITS命令(这很糟糕,我知道......)我无法使用任何API。与此同时,我可能找到了两个解决方案: - 超时服务器端句柄 - 注册表项设置为放大超时。我正在测试它们...... – 2013-03-12 10:47:51

+0

我没有看到服务器如何处理它,除非它可以向客户端发送一个HTTP标头,表明它应该等待多长时间。但是,从文档看来,定时器是客户的私人事务。因此,注册表键将是最可能的选择。你确定你真的想要使用BITS作为请求/响应协议吗?服务器在完成时回调客户端会更有意义。五分钟是客户持续进行会话的相当长的空闲时间。 – 2013-03-12 11:30:37

回答

0

我们尝试修改某些注册表项(如TimeQuantaLenght),但它不能解决问题。

要解决,首先我们放大网站的request timeout。报告中所doc

二:

服务器应用程序必须提供五分钟内响应。如果 服务器应用程序在五分钟内未答复,则作业 将进入暂态错误状态。当重试延迟到期时,BITS服务器将向服务器应用程序 发送另一个通知(应编写服务器应用程序以处理重复的 通知)。

所以我们处理重复请求!在Transient Error的情况下,BITS协议尝试在为MinimunRetryDelay定义的时间后重新启动传输。

我们自己管理这个问题;我们使用GUID识别每次传输,如果传输的GUID进入瞬时错误状态,并重新启动,我们检查传输是否已经发生并处理相应的操作。

0

维基百科,上传工作BITS requires IIS web server with BIT server extension

BITS 1.0版本只支持下载。从版本1.5起,BITS 支持下载和上传。上传需要IIS web 服务器,并在接收端使用BITS服务器扩展。

我不知道你是如何使用BITS协议,但是,this page介绍了如何使用BITS管理commnad行工具来创建下载或上传的工作,并监测其进展情况。低于此开关可以帮助你:

/SetNoProgressTimeout作业超时

设置的时间长度,以秒BITS试图发生,该第一瞬时错误后转移 文件。

this other page描述了BITS IIS扩展属性。我引用了你可能需要的一个。

后台智能传输服务(BITS)使用ISAPI来扩展 IIS以支持上传作业。 BITS使用这些属性来确定 如何上传文件。

BITSSessionTimeout数据类型:DWORD

的,如果没有取得进展 上载文件的连接被保持的秒数;计时器在进行时重置。如果达到超时,BITS 会关闭连接,并清理与会话关联的数据 。

+0

您可能能够使用IIS UI为虚拟目录配置BITS上传从虚拟目录的上下文菜单中选择属性按BITS扩展选项卡访问BITS属性页(必须安装BITS服务器扩展ISAPI) 。http://msdn.microsoft.com/en-us/library/aa363164(v=vs.85).aspx – 2013-03-13 18:11:18