BITS通知要求/応答ヘッダーの使用
BITS は、アップロード ファイルの場所を (参照によって) サーバー アプリケーションに送信することも、アップロード ファイルを要求の本文に含めて (値によって) 送信することもできます。 BITS がアップロード ファイルをサーバー アプリケーションに送信する方法を指定するには、IIS メタベース プロパティ BITSServerNotificationType を設定します。 参照で指定した場合、BITS は BITS-Request-DataFile-Name ヘッダー内のファイルの場所を渡します。 応答を送信するには、BITS-Response-DataFile-Name ヘッダーで指定されたファイルに応答を作成して書き込みます。
同じ応答を多数のクライアントに送信するサーバー アプリケーションは参照で使用する必要があるため、サーバー上の応答のコピーは 1 つだけです。 たとえば、ソフトウェア更新アプリケーションでは、クライアントはソフトウェア構成をサーバー アプリケーションにアップロードします。 サーバー アプリケーションは、クライアントが必要とするパッケージを決定し、パッケージの 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"