Partilhar via


Impedindo vários carregamentos

Quando você carrega um arquivo, o BITS cria uma ID de sessão que identifica a sessão de carregamento para o cliente BITS e o servidor BITS. Se a conexão entre o cliente e o servidor BITS for interrompida enquanto o BITS estiver carregando um arquivo, o cliente usará a ID da sessão para tentar retomar o carregamento.

Se o cliente BITS se conectar ao mesmo servidor anterior, o servidor reconhecerá a ID da sessão e o carregamento será retomado a partir do ponto de interrupção. No entanto, se o cliente se conectar a um servidor diferente, o cliente deverá iniciar o carregamento desde o início porque o novo servidor não tem o contexto da sessão ou os dados carregados anteriormente. O BITS pode se conectar a um servidor diferente quando o servidor BITS está hospedado em um web farm e a propriedade de extensão IIS do BITS, BITSHostId, não está definida. A propriedade BITSHostId impede reinicializações forçando o cliente BITS a se conectar ao endereço exclusivo do servidor anterior em vez do endereço do servidor compartilhado.

O servidor BITS tentará enviar o arquivo de upload apenas uma vez para o aplicativo do servidor, mas é possível que o arquivo possa ser enviado mais de uma vez. Isso pode ocorrer, por exemplo, se o servidor BITS enviar o arquivo para o aplicativo do servidor e, em seguida, termina enquanto aguarda a resposta do aplicativo do servidor. O cliente BITS receberá um código de erro da camada HTTP e tentará novamente o carregamento após um atraso. Se o servidor permanecer offline por mais tempo do que o tempo limite do BITSHostIdFallbackTimeout, o cliente eventualmente enviará a solicitação para o endereço do servidor compartilhado novamente, um servidor BITS diferente receberá o arquivo e o entregará novamente ao aplicativo do servidor.

Um caso semelhante pode ocorrer mesmo com um único servidor front-end. Por exemplo, quando o cliente carregou o arquivo inteiro no servidor, o bloco final faz com que o servidor encaminhe o arquivo para o aplicativo do servidor. Se o servidor BITS ou o aplicativo de servidor for encerrado depois que o arquivo for processado, mas antes que a confirmação seja enviada ao cliente, o cliente receberá um código de erro e tentará novamente mais tarde. Quando o cliente for repetido, o servidor BITS verá que o bloco final foi carregado e encaminhará novamente o arquivo para o aplicativo do servidor. Se receber o arquivo de carregamento várias vezes for um problema para seu aplicativo de servidor, você deve considerar a inclusão de um identificador de transação nos dados.