文件传输一致性

BITS 保证其传输的文件版本根据文件大小和时间戳(而不是内容)保持一致(BITS 不会防范中间人攻击)。 若要自行验证内容,可以使用 IBackgroundCopyFile3::GetTemporaryName 方法获取包含下载内容的文件的名称,使用自己的机制验证内容,然后调用 IBackgroundCopyFile3::SetValidationState 方法,向 BITS 指示文件的内容是否有效。 如果将验证状态设置为 FALSE,并且内容来自源服务器,则作业将进入错误状态。 如果内容来自对等方,则 BITS 将从源服务器下载文件。

对于下载,如果在 BITS 传输文件时文件大小或时间戳发生更改,BITS 仅重新启动该文件的传输。 例如,如果下载作业包含两个文件,并且在 BITS 传输第二个文件时更新了服务器上的文件,则 BITS 仅重新启动第二个文件的传输。 已成功传输的第一个文件不会更新以反映新的更改。

请注意,如果拥有从服务器下载的文件,则应为每个新版本的文件创建新的 URL。 如果对文件的新版本使用相同的 URL,某些代理服务器可能会从其缓存中提供过时数据,因为它们不会与原始服务器验证文件是否过时。

对于上传,如果文件大小或时间戳在文件传输过程中发生更改,BITS 将生成一个错误,并且作业将处于 BG_JOB_STATE_ERROR 状态。

当一个或多个用户请求将同一文件传输到同一位置时,BITS 不会同步传输请求。 BITS 分别为每个请求传输文件。