在我们的Windows应用程序中,我们使用BITS上传协议(带上传回复)将文件上传到我们的服务器,对待它们,并等待响应。 有时服务器详细说明可能很长(> = 10分钟),我们遇到超时问题。
根据文件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 :(得分:0)
来自维基百科,上传职位BITS requires IIS web server with BIT server extension:
BITS 1.0版仅支持下载。从版本1.5,BITS 支持下载和上传。上传需要IIS网站 服务器,带有BITS服务器扩展,在接收端。
我不知道您如何使用BITS协议,但this page解释了如何使用BITS Admin commnad-line工具创建下载或上传作业并监控其进度。下面这个开关可以帮助你:
/ SetNoProgressTimeout 作业超时
设置BITS尝试传输的时间长度(以秒为单位) 发生第一次瞬态错误后的文件。
和this other page描述了BITS IIS扩展属性。我引用了你可能需要的那个。
后台智能传输服务(BITS)使用ISAPI进行扩展 IIS支持上传作业。 BITS使用这些属性来确定 如何上传文件。
BITSSessionTimeout 数据类型: DWORD
如果没有进展,则保持连接的秒数 上传文件;进度时重置计时器。 BITS 如果达到超时,则关闭连接并清除数据 与会话相关联。
答案 1 :(得分:0)
我们尝试修改某些注册表项(例如TimeQuantaLenght
),但它没有解决问题。
要解决,首先我们要扩大网站的request timeout
。
doc中报告的第二个:
服务器应用程序必须在五分钟内提供响应。如果 服务器应用程序在五分钟内没有回复该作业 进入瞬态错误状态。当重试延迟到期时, BITS服务器将向服务器应用程序发送另一个通知 (应该编写服务器应用程序来处理重复 通知)。
所以我们处理重复的请求!如果Transient Error
BITS协议尝试在MinimunRetryDelay
定义的时间后重新开始传输。
我们自己管理这个问题;我们使用GUID识别每次传输,如果传输的GUID进入瞬态错误状态,并重新启动,我们检查传输是否已经发生并处理相应的操作。