Propriedades de extensão do IIS do BITS

O BITS (Serviço de Transferência Inteligente em Segundo Plano) usa um ISAPI para estender o IIS para oferecer suporte a trabalhos de carregamento. A tabela a seguir lista as propriedades que o BITS adiciona à metabase do IIS para o componente de diretório virtual. O BITS usa essas propriedades para determinar como carregar os arquivos. As propriedades da extensão IIS do BITS são herdáveis, exceto BITSUploadEnabled.

Propriedade Descrição
BITSUploadEnabledTipo de dados: Boolean
Indica se os carregamentos do BITS estão habilitados no diretório virtual. Se a configuração não estiver presente ou for 0, os carregamentos do BITS serão desabilitados.
Trata-se de uma propriedade somente leitura. Para definir essa propriedade, chame o método EnableBITSUploads ou DisableBITSUploads da interface IBITSExtensionSetup.
Tipo de dados BITSSessionTimeout: DWORD
Número de segundos em que a conexão é mantida se nenhum progresso for feito carregando o arquivo; O temporizador é redefinido quando o progresso é feito. O BITS fecha a conexão se o tempo limite for atingido e limpa os dados associados à sessão.
Definir um tempo limite de sessão curto pode ser um problema para trabalhos de upload-resposta, pois a resposta só é baixada quando o usuário está conectado à rede. É possível que a sessão atinja o tempo limite antes que a resposta seja baixada, caso em que a sessão é cancelada e o arquivo de resposta é excluído.
Observe que o BITS cancela o trabalho se o valor da Diretiva de Grupo JobInactivityTimeout (o padrão é 90 dias) for atingido, independentemente dessa configuração.
O valor padrão é 1.209.600 (14 dias).
Tipo de dados BITSMaximumUploadSize: String
Número máximo de bytes que podem ser carregados por trabalho. Especifique o número máximo de bytes como uma cadeia decimal; O valor da cadeia de caracteres deve ser menor ou igual a "1844674407370955". Uma cadeia de caracteres vazia é o mesmo que especificar "1844674407370955".
O valor padrão é uma cadeia de caracteres vazia.
Observação: no IIS 7, o limite de carregamento padrão é de 30 milhões de bytes. O valor da propriedade BITSMaximumUploadSize não pode exceder o limite do IIS. Para obter detalhes e informações sobre como alterar o padrão do IIS, consulte KB942074.
Tipo de dados BITSServerNotificationType: DWORD
Especifica como enviar o arquivo de carregamento para o aplicativo de servidor. Os valores possíveis são: 0, 1 e 2.
Um valor 0 significa que o arquivo não é enviado para o aplicativo do servidor. O BITS coloca o arquivo de carregamento no diretório especificado no nome remoto (o nome remoto especificado quando você adicionou o arquivo ao trabalho) sem notificar o aplicativo do servidor. Se o arquivo existir atualmente no diretório de destino, ele será substituído pelo arquivo de carregamento.
Um valor de 1 significa que o BITS passa o local do arquivo de carregamento para o aplicativo de servidor especificado na propriedade BITSServerNotificationURL . O aplicativo de servidor processa o arquivo e gera um arquivo de resposta, se necessário. Por padrão, o BITS remove os arquivos de upload e resposta do servidor depois que ele recebe a resposta do aplicativo do servidor. Para que o BITS copie o arquivo de carregamento para o local especificado pelo nome do arquivo remoto no trabalho, inclua o cabeçalho BITS-Copy-File-To-Destination em sua resposta. Se você não incluir o cabeçalho e quiser salvar os arquivos de upload e resposta, copie os arquivos de upload e resposta para um novo local antes de responder.
Um valor de 2 significa que o BITS passa o arquivo de carregamento no corpo da solicitação para o aplicativo de servidor especificado na propriedade BITSServerNotificationURL . O aplicativo servidor processa o arquivo e passa a resposta no corpo da resposta, se necessário.
Para obter detalhes sobre os cabeçalhos de solicitação e resposta, consulte Protocolo de notificação para aplicativos de servidor.
O aplicativo do servidor deve fornecer uma resposta dentro de cinco minutos. Se o aplicativo do servidor não responder dentro de cinco minutos, o trabalho entrará no estado de erro transitório. Quando o atraso da nova tentativa expirar, o servidor BITS enviará outra notificação ao aplicativo do servidor (o aplicativo do servidor deve ser gravado para lidar com notificações duplicadas).BITS 1.5: O tempo limite de notificação é de 30 segundos.

Valor padrão é 0.
Tipo de dados BITSServerNotificationURL: String
Opcional. Contém a URL do aplicativo de servidor no qual o BITS posta o arquivo de carregamento. Você deve especificar uma URL se o valor da propriedade BITSServerNotificationType for 1 ou 2. A URL é limitada a 2.200 caracteres, não incluindo o terminador nulo. A URL deve ser uma URL HTTP; O BITS não oferece suporte a URLs de notificação HTTPS.
Se o URL não estiver disponível no momento do carregamento, o BITS tentará novamente o carregamento até que o URL de notificação exista ou até que o período de repetição expire.
Observe que, se o nome remoto especificado no trabalho contiver uma cadeia de caracteres de consulta, a cadeia de caracteres de consulta será anexada à URL especificada. Por exemplo, se o nome remoto contiver https://myserver/myvdir/subdir/file.asp?ACCOUNT=86433 e você especificar a configuração BITSServerNotificationURL como https://otherserver/myvdir2/bag.asp, a URL para a qual o BITS posta seráhttps://otherserver/myvdir2/bag.asp?ACCOUNT=86433.
Se a URL original for e a URL de notificação for https://myserver/myvdir/file.txt myasp.asp, o BITS usará http//myserver/myvdir/myasp.asp como a URL de notificação.
Se a parte do caminho e do nome do arquivo da URL contiver caracteres Unicode não comuns à página de código no cliente e no servidor, a conversão da URL falhará no servidor e o trabalho do BITS será colocado no estado de erro. Se a parte do servidor da URL contiver caracteres Unicode, você deverá codificar a parte do servidor usando Nomes de Domínio Internacionalizados (IDN).
Tipo de dados BITSHostId: String
Defina essa propriedade se a instalação do servidor for um web farm que não usa armazenamento compartilhado.
Especifique o nome do servidor ou o endereço IP do servidor ao qual se reconectar depois que o processo de carregamento for interrompido. Normalmente, você especifica o nome do servidor que está configurando. A URL é limitada a 300 caracteres, não incluindo o terminador nulo.
Se você não especificar essa propriedade e o processo de carregamento for interrompido, é possível que o BITS retome o trabalho em outro servidor no farm. No entanto, o servidor anterior ainda contém o arquivo de carregamento parcial de antes da interrupção. O BITS remove o arquivo parcial depois que o BITSSessionTimeout expira.
Nota: Não use a propriedade BITSHostId se o SSL for usado em um web farm que usa NLB (Balanceamento de Carga de Rede) ou nomes DNS com vários endereços IP, a menos que você inclua o nome do cluster e nomes de servidor individuais no certificado. (Se o nome do servidor especificado em BITSHostId não corresponde ao nome comum no certificado, o trabalho falhará.) Em vez disso, para NLB, defina o parâmetro Affinity como Single para garantir que o cliente se comunique com o mesmo servidor no futuro.
Tipo de dados BITSHostIdFallbackTimeout: DWORD
Número de segundos que o cliente BITS tenta se reconectar ao nome do servidor BITSHostId antes de reverter para o nome do host especificado no nome do arquivo remoto do trabalho. O temporizador começa quando o BITS não consegue se conectar ao servidor BITSHostId . O temporizador é redefinido quando o cliente se conecta com êxito ao servidor.
Observe que o valor de tempo limite sem progresso do trabalho (consulte IBackgroundCopyJob::SetNoProgressTimeout) deve ser maior do que esse valor de tempo limite. Caso contrário, o trabalho falhará antes que o valor de tempo limite de fallback expire.
Defina essa propriedade somente se você definir a propriedade BITSHostId .
O valor padrão é 86.400 (1 dia).
Tipo de dados BITSAllowOverwrites: Integer
Indica se um arquivo de carregamento pode substituir um arquivo existente com o mesmo nome. O arquivo de upload substitui o arquivo existente se BITSAllowOverwrites for 1.
Valor padrão é 0.
IIS 6.0: Você pode definir essa propriedade somente a partir de um script, você não pode defini-la usando a página de propriedades da extensão BITS na interface do usuário do IIS.

Tipo de dados BITSCleanupUseDefault: Booleano
Indica se a tarefa de limpeza usa as agendas padrão. Por padrão, a tarefa de limpeza é executada a cada 12 horas.
Defina como 1 para usar o agendamento padrão; caso contrário, 0 para especificar uma agenda.
Para especificar uma agenda, use as propriedades BITSCleanupCount e BITSCleanupUnits .
A tarefa de limpeza limpa o diretório virtual excluindo trabalhos que não foram modificados dentro do período de tempo limite da sessão (consulte BITSSessionTimeout).
O padrão é 1 use o agendamento padrão.
IIS 6.0: sem suporte.
Tipo de dados BITSCleanupCount: Inteiro
Especifica o intervalo a ser aguardado entre a execução da tarefa de limpeza. O intervalo que você pode especificar depende das unidades. Para obter valores de intervalo possíveis, consulte a propriedade BITSCleanupUnits .
Essa propriedade será ignorada se BITSCleanupUseDefault for 0.
IIS 6.0: sem suporte.

Tipo de dados BITSCleanupUnits: Integer
Especifica as unidades para o intervalo de limpeza especificado na propriedade BITSCleanupCount . Essa propriedade será ignorada se BITSCleanupUseDefault for 0.
Os valores possíveis são:
0: As unidades são minutos. Os valores possíveis são de 1 a 60.
1: As unidades são horas. Esse é o padrão. Os valores possíveis são de 1 a 24.
2: As unidades são dias. Os valores possíveis são de 1 a 360.

IIS 6.0: sem suporte.

Tipo de dados BITSNumberOfSessionsLimit: Inteiro
Limita o número de sessões de carregamento que podem existir simultaneamente para um usuário. Se o número de sessões para um usuário for maior que esse limite, quando a tarefa de limpeza for executada, ela excluirá as sessões mais recentes até que o número de sessões para o usuário esteja abaixo do limite.
O padrão é 50 sessões.
IIS 6.0: sem suporte.

Tipo de dados BITSSessionLimitEnable: Boolean
Indica se o BITS limita o número de sessões de carregamento por usuário. Se a configuração não estiver presente ou for 0, o limite será desabilitado.
Para especificar o limite, defina a propriedade BITSNumberOfSessionsLimit .
O padrão é 1.
IIS 6.0: sem suporte.

O exemplo a seguir mostra como definir as propriedades da extensão IIS do BITS usando o Windows Script Host. Se o diretório virtual apontar para um compartilhamento remoto, defina também as propriedades UNCUserName e UNCPassword IIS.

if (WScript.Arguments.length < 2)
{
    WScript.Echo("Usage: bitsvdir virtual_directory local_directory");
    WScript.Quit(1);
}

VirtualDirectoryName = WScript.Arguments(0);
LocalDirectoryName = WScript.Arguments(1);

ServerObj = GetObject("IIS://LocalHost/W3SVC/1/ROOT");
VirtualDir = ServerObj.Create("IIsWebVirtualDir", VirtualDirectoryName );

VirtualDir.Path = LocalDirectoryName;
VirtualDir.AppIsolated = 0;
VirtualDir.AccessScript = true;
VirtualDir.AccessRead = false;
VirtualDir.AccessWrite = false;
VirtualDir.SetInfo();

// Set BITS specific IIS configuration settings
VirtualDir.EnableBITSUploads();
VirtualDir.BITSMaximumUploadSize = "4294967296";
VirtualDir.SetInfo();

WScript.Echo( "Created virtual directory " + VirtualDirectoryName + 
              " with a local directory of " + LocalDirectoryName );
WScript.Quit( 0 );