Согласованность передачи файлов

BITS гарантирует, что версия файла, который он передает, согласована на основе размера файла и метки времени, а не содержимого (BITS не защищает от атак "злоумышленник в середине"). Чтобы проверить содержимое самостоятельно, можно использовать метод IBackgroundCopyFile3::GetTemporaryName, чтобы получить имя файла, содержащего скачанного содержимого, проверить содержимое с помощью собственного механизма, а затем вызвать метод IBackgroundCopyFile3::SetValidationState, чтобы указать BITS, если содержимое файла является допустимым. Если для состояния проверки задано значение FALSE , а содержимое находится на исходном сервере, задание переходит в состояние ошибки. Если содержимое находится из однорангового узла, BITS скачивает файл с исходного сервера.

При загрузке, если размер файла или метка времени изменяется во время передачи файла BITS, BITS перезапускает передачу только этого файла. Например, если задание скачивания содержит два файла, а файлы обновляются на сервере во время передачи второго файла, BITS перезапускает передачу только второго файла. Первый файл, который уже успешно передан, не обновляется, чтобы отразить новые изменения.

Обратите внимание, что если вы владеете файлом, скачанным с сервера, необходимо создать новый URL-адрес для каждой новой версии файла. Если вы используете тот же URL-адрес для новых версий файла, некоторые прокси-серверы могут служить устаревшими данными из кэша, так как они не проверяют исходный сервер, если файл устарел.

При отправке, если размер файла или метка времени изменяется во время передачи файла, BITS создает ошибку и задание помещается в состояние BG_JOB_STATE_ERROR.

BITS не синхронизирует запросы на передачу, если один или несколько пользователей запрашивают, что один и тот же файл передается в то же расположение. BITS передает файл для каждого запроса отдельно.