檔傳輸一致性

BITS 保證其傳輸的檔案版本會根據檔案大小和時間戳保持一致,而不是內容(BITS 不會防範中間人攻擊)。 若要自行驗證內容,您可以使用IBackgroundCopyFile3::GetTemporaryName 方法來取得包含已下載內容的檔名、使用您自己的機制驗證內容,然後呼叫 IBackgroundCopyFile3::SetValidationState 方法,以指出檔案的內容是否有效。 如果您將驗證狀態設定為 FALSE ,且內容來自源伺服器,作業會進入錯誤狀態。 如果內容來自對等,BITS 會從源伺服器下載檔案。

針對下載,如果在 BITS 傳輸檔案時檔案大小或時間戳有所變更,BITS 只會重新啟動該檔案的傳輸。 例如,如果下載作業包含兩個檔案,而且在 BITS 傳輸第二個檔案時,伺服器上的檔案會更新,BITS 只會重新啟動第二個檔案的傳輸。 第一個已成功傳輸的檔案不會更新,以反映新的變更。

請注意,如果您擁有要從伺服器下載的檔案,您應該為每個新版本的檔案建立新的 URL。 如果您針對新版本的檔案使用相同的 URL,某些 Proxy 伺服器可能會從其快取提供過時的數據,因為它們不會向源文件驗證檔案是否過時。

對於上傳,如果檔案大小或時間戳在檔傳輸期間變更,BITS 會產生錯誤,且作業會處於BG_JOB_STATE_ERROR狀態。

當一或多個使用者要求將相同檔案傳輸至相同位置時,BITS 不會同步處理傳輸要求。 BITS 會個別傳輸每個要求的檔案。