使用 BITS 通知请求/响应标头

BITS 可以将上传文件的位置(按引用)发送到服务器应用程序,也可以在请求正文中发送上传文件(按值)。 若要指定 BITS 如何将上传文件发送到服务器应用程序,请设置 IIS 元数据库属性 BITSServerNotificationType。 如果按引用指定,则 BITS 会在 BITS-Request-DataFile-Name 标头中传递文件的位置。 若要发送回复,请创建响应并将其写入 BITS-Response-DataFile-Name 标头中指定的文件。

向许多客户端发送相同答复的服务器应用程序应按引用使用,因此服务器上只有一个答复副本。 例如,在软件更新应用程序中,客户端会将其软件配置上传到服务器应用程序。 服务器应用程序确定客户端需要哪个包,并将包的 URL 发送到 BITS。 然后,BITS 下载包作为答复。

为每个客户端生成唯一答复的服务器应用程序应按值使用。 例如,支持购买音乐文件的服务器应用程序需要将签名的音乐文件发送到客户端。 由于签名的音乐文件对客户端是唯一的,因此服务器应用程序不会将其存储在服务器上。 按值对于已经编写为直接接受 Web 客户端数据的应用程序也很有用。

有关 BITS 与服务器应用程序之间使用的请求和响应标头的详细信息,请参阅服务器应用程序的通知协议

以下 JavaScript 示例显示了如何在使用引用通知(BITS 在标头中传递文件的位置)的服务器应用程序中访问请求和响应文件。

  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()

如果要使用与 BITS-Response-DataFile-Name 中指定的响应文件不同的响应文件,请调用 Response.AddHeader 方法以添加 BITS-Static-Response-URL,如以下示例所示。 如果指定其他响应文件,请不要创建 BITS-Response-DataFile-Name 中指定的响应文件。

  Response.AddHeader "BITS-Static-Response-URL" "https://myserver/mypath/myfile"