BITS IIS 拡張機能のプロパティ

バックグラウンド インテリジェント転送サービス (BITS) は、ISAPI を使用して IIS を拡張し、アップロード ジョブをサポートします。 次の表に、BITS が仮想ディレクトリ コンポーネントの IIS メタベースに追加するプロパティを示します。 BITS はこれらのプロパティを使用して、ファイルのアップロード方法を決定します。 BITSUploadEnabled を除き、BITS IIS 拡張プロパティは継承可能です。

プロパティ 説明
BITSUploadEnabled データ型: ブール値
仮想ディレクトリで BITS アップロードが有効になっているかどうかを示します。 設定が存在しない場合、または 0 の場合、BITS アップロードは無効になります。
これは、読み取り専用プロパティです。 このプロパティを設定するには、IBITSExtensionSetup インターフェイスの EnableBITSUploads メソッドまたは DisableBITSUploads メソッドを呼び出します。
BITSSessionTimeout データ型: DWORD
ファイルのアップロードが進まない場合に接続が維持される秒数。進行するとタイマーはリセットされます。 タイムアウトに達すると、BITS は接続を閉じ、セッションに関連付けられたデータをクリーンアップします。
応答はユーザーがログオンしてネットワークに接続しているときにのみダウンロードされるため、短いセッション タイムアウトを設定すると、アップロード応答ジョブで問題が発生する可能性があります。 応答がダウンロードされる前にセッションがタイムアウトする可能性があります。この場合、セッションは取り消され、応答ファイルは削除されます。
この設定に関係なく、JobInactivityTimeout グループ ポリシー値 (既定値は 90 日) に達した場合、BITS はジョブを取り消します。
既定値は 1,209,600 (14 日) です。
BITSMaximumUploadSize データ型: 文字列
ジョブごとにアップロードできる最大バイト数。 最大バイト数を 10 進数の文字列として指定します。文字列値は「1844674407370955」以下である必要があります。 空の文字列は、「1844674407370955」を指定する場合と同じです。
既定値は空の文字列です。
注: IIS 7 では、既定のアップロード制限は 3,000 万バイトです。 BITSMaximumUploadSize プロパティの値が IIS の制限を超えることはできません。 IIS の既定値の変更の詳細と情報については、「KB942074」を参照してください。
BITSServerNotificationType データ型: DWORD
アップロード ファイルをサーバー アプリケーションに送信する方法を指定します。 有効な値は、0、1、および 2 です。
値 0 は、ファイルがサーバー アプリケーションに送信されないことを意味します。 BITS は、サーバー アプリケーションに通知せずに、リモート名 (ジョブにファイルを追加したときに指定されたリモート名) に指定されたディレクトリにアップロード ファイル を配置します。 ファイルが現在宛先ディレクトリに存在する場合は、アップロード ファイルに置き換えられます。
値が 1 の場合、BITS は、BITSServerNotificationURL プロパティで指定されたサーバー アプリケーションにアップロード ファイルの場所を渡します。 サーバー アプリケーションはファイルを処理し、必要に応じて応答ファイルを生成します。 既定では、BITS はサーバー アプリケーションから応答を受信した後、アップロード ファイルと応答ファイルをサーバーから削除します。 BITS でアップロード ファイルをジョブ内のリモート ファイル名で指定された場所にコピーするには、BITS-Copy-File-To-Destination ヘッダーを応答に含めます。 ヘッダーを含めず、アップロードファイルと返信ファイルを保存する場合は、応答する前にアップロードファイルと返信ファイルを新しい場所にコピーする必要があります。
値が 2 の場合、BITS は要求の本文のアップロード ファイルを BITSServerNotificationURL プロパティで指定されたサーバー アプリケーションに渡します。 サーバー アプリケーションはファイルを処理し、必要に応じて応答の本文で応答を返します。
要求ヘッダーと応答ヘッダーの詳細については、「サーバー アプリケーションの通知プロトコル」を参照してください。
サーバー アプリケーションは、5 分以内に応答を提供する必要があります。 サーバー アプリケーションが 5 分以内に応答しない場合、ジョブは一時的なエラー状態になります。 再試行の遅延が期限切れになると、BITS サーバーはサーバー アプリケーションに別の通知を送信します (サーバー アプリケーションは、重複する通知を処理するように書き込む必要があります)。BITS 1.5: 通知タイムアウトは 30 秒です。

既定値は 0 です。
BITSServerNotificationURL データ型: String
省略可能。 BITS がアップロード ファイルを投稿するサーバー アプリケーションの URL を格納します。 BITSServerNotificationType プロパティの値が 1 または 2 の場合は、URL を指定する必要があります。 URL は 2,200 文字に制限されており、null ターミネータは含まれません。 URL は HTTP URL である必要があります。BITS は HTTPS 通知 URL をサポートしていません。
アップロード時に URL が利用できない場合、BITS は通知 URL が存在するか、再試行期間が終了するまでアップロードを再試行します。
ジョブで指定されたリモート名にクエリ文字列が含まれている場合、そのクエリ文字列が指定した URL に追加されることに注意してください。 たとえば、リモート名に https://myserver/myvdir/subdir/file.asp?ACCOUNT=86433 が含まれ、BITSServerNotificationURL 設定を https://otherserver/myvdir2/bag.asp のように指定すると、BITS がポストする URL は https://otherserver/myvdir2/bag.asp?ACCOUNT=86433. となります。
元の URL が https://myserver/myvdir/file.txt で、通知 URL が myasp.asp の場合、BITS は http//myserver/myvdir/myasp.asp を通知 URL として使用します。
URL のパスとファイル名の部分に、クライアントとサーバーの両方のコード ページに共通しない Unicode 文字が含まれている場合、サーバーでの URL 変換は失敗し、BITS ジョブはエラー状態になります。 URL のサーバー部分に Unicode 文字が含まれている場合は、国際化ドメイン名 (IDN) を使用してサーバー部分をエンコードする必要があります。
BITSHostId データ型: String
サーバーのインストールが共有ストレージを使用しない Web ファームである場合は、このプロパティを設定します。
アップロード プロセスが中断された後に再接続するサーバーのサーバー名または IP アドレスを指定します。 通常は、構成しているサーバーの名前を指定します。 URL は 300 文字に制限されており、null ターミネータは含まれません。
このプロパティを指定せずにアップロード プロセスが中断された場合、BITS がファーム内の別のサーバーでジョブを再開する可能性があります。 ただし、前のサーバーには中断前の部分アップロード ファイルがまだ含まれています。 BITSSessionTimeout の有効期限が切れると、BITS によって部分ファイルが削除されます。
注: 証明書にクラスター名と個々のサーバー名を含めない限り、ネットワーク負荷分散 (NLB) または複数の IP アドレスを持つ DNS 名を使用する Web ファームで SSL が使用されている場合は、BITSHostId プロパティを使用しないでください。 (BITSHostId は証明書の共通名と一致しません。ジョブは失敗します)。代わりに、NLB の場合は、Affinity パラメーターを Single に設定して、クライアントが今後同じサーバーと通信するようにします。
BITSHostIdFallbackTimeout データ型: DWORD
BITS クライアントが BITSHostId サーバー名に再接続してから、ジョブのリモート ファイル名に指定されたホスト名に戻す秒数。 BITS が BITSHostId サーバーに接続できない場合、タイマーが開始されます。 タイマーは、クライアントがサーバーに正常に接続するとリセットされます。
ジョブの進行状況タイムアウト値 (IBackgroundCopyJob::SetNoProgressTimeout を参照) は、このタイムアウト値より長くする必要があることに注意してください。 そうでない場合、フォールバック タイムアウト値が期限切れになる前にジョブは失敗します。
BITSHostId プロパティを設定した場合にのみ、このプロパティを設定します。
既定値は 86,400 (1 日) です。
BITSAllowOverwrites データ型: 整数
アップロード ファイルが同じ名前の既存のファイルを上書きできるかどうかを示します。 BITSAllowOverwrites が 1 の場合、アップロード ファイルによって既存のファイルが上書きされます。
既定値は 0 です。
IIS 6.0: このプロパティはスクリプトからのみ設定できます。IIS ユーザー インターフェイスの BITS 拡張プロパティ ページを使用して設定することはできません。

BITSCleanupUseDefault データ型: ブール値
クリーンアップ タスクが既定のスケジュールを使用するかどうかを示します。 既定では、クリーンアップ タスクは 12 時間ごとに実行されます。
既定のスケジュールを使用する場合は 1 に設定します。それ以外の場合、スケジュールを指定する場合は 0 を設定します。
スケジュールを指定するには、BITSCleanupCount プロパティと BITSCleanupUnits プロパティを使用します。
クリーンアップ タスクは、セッション タイムアウト期間内に変更されていないジョブを削除することによって、仮想ディレクトリをクリーンします (BITSSessionTimeout を参照)。
既定値は 1 で、既定のスケジュールを使用します。
IIS 6.0: サポートされていません。
BITSCleanupCount データ型: 整数
クリーンアップ タスクの実行の間に待機する間隔を指定します。 指定できる間隔は、単位によって異なります。 指定できる間隔の値については、BITSCleanupUnits プロパティを参照してください。
BITSCleanupUseDefault が 0 の場合、このプロパティはそのメッセージについて無視されます。
IIS 6.0: サポートされていません。

BITSCleanupUnits データ型: 整数
BITSCleanupCount プロパティで指定されたクリーンアップ間隔の単位を指定します。 BITSCleanupUseDefault が 0 の場合、このプロパティはそのメッセージについて無視されます。
指定できる値は、
0: 単位は分です。 有効な値は 1 から 60 です。
1: 単位は時間です。 これが既定です。 有効な値は 1 から 24 です。
2: 単位は日です。 有効な値は 1 から 360 です。

IIS 6.0: サポートされていません。

BITSNumberOfSessionsLimit データ型: 整数
ユーザーに対して同時に存在できるアップロード セッションの数を制限します。 ユーザーのセッション数がこの制限を超える場合、クリーンアップ タスクが実行されると、ユーザーのセッション数が制限を下回るまで、最新のセッションが削除されます。
既定では 50 セッションです。
IIS 6.0: サポートされていません。

BITSSessionLimitEnable データ型: ブール値
BITS がユーザーごとのアップロード セッションの数を制限するかどうかを示します。 設定が存在しない場合、または 0 の場合、制限は無効になります。
制限を指定するには、BITSNumberOfSessionsLimit プロパティを設定します。
既定値は 1 です。
IIS 6.0: サポートされていません。

次の例は、Windows スクリプト ホストを使用して BITS IIS 拡張プロパティを設定する方法を示しています。 仮想ディレクトリがリモート共有を指している場合は、UNCUserNameUNCPassword IIS プロパティも設定します。

if (WScript.Arguments.length < 2)
{
    WScript.Echo("Usage: bitsvdir virtual_directory local_directory");
    WScript.Quit(1);
}

VirtualDirectoryName = WScript.Arguments(0);
LocalDirectoryName = WScript.Arguments(1);

ServerObj = GetObject("IIS://LocalHost/W3SVC/1/ROOT");
VirtualDir = ServerObj.Create("IIsWebVirtualDir", VirtualDirectoryName );

VirtualDir.Path = LocalDirectoryName;
VirtualDir.AppIsolated = 0;
VirtualDir.AccessScript = true;
VirtualDir.AccessRead = false;
VirtualDir.AccessWrite = false;
VirtualDir.SetInfo();

// Set BITS specific IIS configuration settings
VirtualDir.EnableBITSUploads();
VirtualDir.BITSMaximumUploadSize = "4294967296";
VirtualDir.SetInfo();

WScript.Echo( "Created virtual directory " + VirtualDirectoryName + 
              " with a local directory of " + LocalDirectoryName );
WScript.Quit( 0 );