Usando cabeçalhos de solicitação/resposta de notificação do BITS
O BITS pode enviar o local do arquivo de upload (por referência) para seu aplicativo de servidor ou pode enviar o arquivo de upload no corpo da solicitação (por valor). Para especificar como o BITS envia o arquivo de carregamento para seu aplicativo de servidor, defina a propriedade da metabase do IIS, BITSServerNotificationType. Se você especificar por referência, o BITS passará o local do arquivo no cabeçalho BITS-Request-DataFile-Name. Para enviar uma resposta, crie e grave sua resposta no arquivo especificado no cabeçalho BITS-Response-DataFile-Name.
Os aplicativos de servidor que enviam a mesma resposta para muitos clientes devem ser usados por referência, portanto, há apenas uma cópia da resposta no servidor. Por exemplo, em um aplicativo de atualização de software, o cliente carregaria sua configuração de software no aplicativo de servidor. O aplicativo de servidor determina qual pacote o cliente precisa e envia a URL do pacote para o BITS. Em seguida, o BITS baixa o pacote como resposta.
Os aplicativos de servidor que geram respostas exclusivas para cada cliente devem ser usados por valor. Por exemplo, um aplicativo de servidor que ofereça suporte à compra de arquivos de música precisaria enviar um arquivo de música assinado para o cliente. Como o arquivo de música assinado é exclusivo do cliente, o aplicativo de servidor não o armazenaria no servidor. Por valor também é útil para um aplicativo que já está escrito para aceitar dados de cliente da Web diretamente.
Para obter detalhes sobre os cabeçalhos de solicitação e resposta usados entre o BITS e seu aplicativo de servidor, consulte Protocolo de notificação para aplicativos de servidor.
O exemplo JavaScript a seguir mostra como acessar os arquivos de solicitação e resposta em um aplicativo de servidor que usa notificação por referência (o BITS passa o local dos arquivos nos cabeçalhos).
var fso = new ActiveXObject ("Scripting.FileSystemObject")
var requestFileName = Request.ServerVariables ("HTTP_BITS-Request-DataFile-Name")
var responseFileName = Request.ServerVariables ("HTTP_BITS-Response-DataFile-Name")
var requestStream
var responseStream
var ForReading = 1
var ForWriting = 2
var TristateUseDefault = -2
//Open the upload data file as text stream for reading.
requestStream = fso.OpenTextFile(requestFileName, ForReading, false, TristateUseDefault);
//Do something with the uploaded data.
//Close the upload stream.
requestStream.Close()
//Open response data file as text stream for writing.
responseStream = fso.OpenTextFile(responseFileName, ForWriting, true, TristateUseDefault);
//Write a response to the response file.
//Close the response text stream
responseStream.Close()
Se você quiser usar um arquivo de resposta diferente daquele especificado em BITS-Response-DataFile-Name, chame o método Response.AddHeader para adicionar o BITS-Static-Response-URL, conforme mostrado no exemplo a seguir. Se você especificar um arquivo de resposta diferente, não crie o arquivo de resposta especificado em BITS-Response-DataFile-Name.
Response.AddHeader "BITS-Static-Response-URL" "https://myserver/mypath/myfile"