使用 BITS 通知要求/回應標頭

BITS 可以將上傳檔案的位置(以傳址方式)傳送至您的伺服器應用程式,也可以將上傳檔案傳送到要求主體中(依值)。 若要指定 BITS 如何將上傳檔案傳送至伺服器應用程式,請設定 IIS Metabase 屬性 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"