Partilhar via


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"