Compartilhar via


Consistência de transferência de arquivos

O BITS garante que a versão do arquivo transferido é consistente com base no tamanho do arquivo e no carimbo de data/hora, não no conteúdo (o BITS não protege contra ataques intermediários). Para verificar o conteúdo, você pode usar o método IBackgroundCopyFile3::GetTemporaryName para obter o nome do arquivo que contém o conteúdo baixado, verificar o conteúdo usando seu próprio mecanismo e, em seguida, chamar o método IBackgroundCopyFile3::SetValidationState para indicar ao BITS se o conteúdo do arquivo é válido. Se você definir o estado de validação como FALSE e o conteúdo for do servidor de origem, o trabalho entrará no estado de erro. Se o conteúdo for de um peer, o BITS baixará o arquivo do servidor de origem.

Para downloads, se o tamanho do arquivo ou carimbo de data/hora for alterado enquanto o BITS estiver transferindo o arquivo, o BITS reiniciará a transferência somente desse arquivo. Por exemplo, se o trabalho de download contiver dois arquivos e os arquivos forem atualizados no servidor enquanto o BITS estiver transferindo o segundo arquivo, o BITS reiniciará a transferência somente do segundo arquivo. O primeiro arquivo, que já foi transferido com êxito, não é atualizado para refletir as novas alterações.

Observe que, se você possui o arquivo que está sendo baixado do servidor, você deve criar uma nova URL para cada nova versão do arquivo. Se você usar a mesma URL para novas versões do arquivo, alguns servidores proxy podem servir dados obsoletos de seu cache porque eles não verificam com o servidor original se o arquivo está obsoleto.

Para uploads, se o tamanho do arquivo ou carimbo de data/hora for alterado durante a transferência de arquivos, o BITS gerará um erro e o trabalho será colocado no estado BG_JOB_STATE_ERROR.

O BITS não sincroniza solicitações de transferência quando um ou mais usuários solicitam que o mesmo arquivo seja transferido para o mesmo local. O BITS transfere o arquivo para cada solicitação separadamente.