BITS Server Extensions

BITS Server Extension

The Background Intelligent Transfer Service (BITS) Server Extension lets you configure IIS Server to allow BITS clients to perform background restartable uploads of files to IIS virtual directories. Upon completion of a file upload, a Web application can be notified of the new file (via a POST to a configureable URL) in order to process the uploaded files. Your Web application can then optionally reply to the client's posting.

Other configurable options include: setting limits on uploaded file size; automatically deleting incomplete files after a preset amount of time (deleting orphan files); and server farm support.


Configuring the Background Intelligent Transfer Service Extension

Configuring BITS Extension

Use the BITS Extension property tab to configure the BITS Extension for an IIS virtual directory. BITS allows client systems to do restartable background uploads of files to a virtual directory. Once a file transfer has completed, BITS can notify Web applications via a POST of the data arrival.

Note: To open the property page in the Microsoft Management Console (MMC), click properties on a virtual directory in MMC and select the "BITS Server Extension" tab.

Allow clients to transfer data to this virtual directory

Select this checkbox to enables uploads from BITS clients into this virtual directory. If not enabled, BITS clients that attempt an upload will be denied access.

Use default settings

Use the default configuration for this virtual directory. The configuration settings are inheritable; so, if this directory is a subdirectory of another virtual directory and the parent virtual directory defines a custom configuration, then that configuration will be used instead of the default settings.

Customize settings

Use the configuration information from this property page (specified below). No default or inherited settings will be used.

Maximum file size

If enabled, this defines the maximum size of a file that can be uploaded in a single BITS job. If not enabled, then there is no limit on the size of files that a client can upload.

Delete incomplete jobs after

If enabled, incomplete upload files will be deleted if no progress has been made for the specified time period. The timeout is checked each time the cleanup process is scheduled to run. See Schedule Cleanup to configure the frequency that the cleanup process should be run for this virtual directory.

Enable server farm support

If enabled, this informs the client to try to reconnect to the same server instead of the original upload URL that was used by the client. This allows clients which are uploading to server farms to continue uploading to the same server that the upload was started with.

Server farms can be configured two ways; first by using a shared volume for the upload virtual directory; or alternatively by using server local storage for the uploaded files. If you wish to use local storage then this option will enable the client to reconnect to the same server machine in the server farm. Uploading to server farms and using local storage is not recommended without enabling and configuring this feature.

Reconnect to IP address

Use this field to specify the public IP address to use for reconnecting to this server. A common configuration for a server will have two IP addresses; one that is outward pointing and that is reachable by client systems; and one that is part of the inner (protected) network. You should specify the outward pointing IP address here.

Note: that you can specify a DNS name here only if each machine in your Web farm has an independent DNS name that is resolvable by the client machines.

Use original IP address after

If a client can't reconnect to the server at the above Reconnect to IP address for this amount of time, then the clients will revert to the original DNS name they specified in the upload URL.

Allow notifications

Enables notifications for this virtual directory. The Notification type and Notification URL settings are both required if this setting is enabled.

Notification type

Configures the type of notification to perform after the job is uploaded.

Send the file name | The server will pass the path to the completed upload file to the URL specified by the Notification URL setting. The server may return a file to the client as a response.
Send the file contents | The server will pass the entire completed upload file to the URL specified by the Notification URL as the entity body of the POST. The response entity will be sent to the client.

Notification URL

Specifies the URL to pass the completed upload file to via a POST request if the Notification type is Send the file contents or Send the file name. The URL may be absolute or self-relative. If the URL is self-relative, then the original request URL is used as the base.

Schedule Cleanup

Configures the frequency for which BITS Extensions should scan this virtual directory for incomplete files. If an incomplete upload is found, the file is checked against the timeout value. If progress has not been made on this file for longer then the timeout period, the upload is automatically cancelled and any partial file contents are deleted. This setting is not affected by IIS property inheritance and applies only to this virtual directory.

Run Cleanup Now

Immediately starts a check for files which have had no progress since the timeout period. To remove all incomplete files for this virtual directory, set the timeout value to 0 before running the cleanup.


Disabling Scripting

IIS allows a user to set the script and execute permissions on a Virtual Directory separately from its Write permissions. Normally, administrators who wish to allow script and program execution on a virtual directory disallow writing to that virtual directory (this will keep clients from uploading executable scripts or programs to a directory and executing them).

However, when a virtual directory is enabled for BITS uploads, then even though Write permissions on the virtual directory has been disallowed, clients can write to this directory via BITS uploads. To protect the server, BITS disables all Script and Execute permissions on a BITS-Upload enabled Virtual Directory. To make sure that this virtual directory is secure, BITS Server extensions will check to make sure that these permissions are disabled before responding to any client request for uploading data. If these permissions are enabled at any time, BITS Server Extensions will deny all upload requests thereafter, until the permissions are disabled again. Every time the BITS Server extension denies a request in such an environment, it will write a log entry in the IIS logs.