服务器应用程序的通知协议

BITS 使用 BITSServerNotificationType 属性来确定 BITS 如何将上传文件的内容发送到服务器应用程序。 如果 BITSServerNotificationType 属性设置为 1, 则 BITS 会传递标头中上传文件的位置。 如果 BITSServerNotificationType 属性设置为 2, 则 BITS 在请求正文中传递上传文件的内容

有关 BITS 如何处理服务器应用程序中的错误的详细信息,请参阅 处理服务器应用程序错误

在标头中发送上传文件的位置

如果 BITSServerNotificationType 属性设置为 1,则 BITS 会将上传和回复文件的位置传递给标头中的服务器应用程序。 服务器应用程序打开上传文件,处理数据,然后生成回复文件。 默认情况下,BITS 从服务器应用程序收到响应后,会从服务器中删除上传和回复文件。 若要让 BITS 将上传文件复制到作业中远程文件名指定的位置,请在响应中包含 BITS-Copy-File-To-Destination 标头。 如果不包含标头,并且想要保存上传和回复文件,则必须在响应之前将上传和答复文件复制到新位置。 下表显示了请求标头。

请求标头 说明
BITS-Original-Request-URL 包含作业中指定的远程名称。
BITS-Request-DataFile-Name 包含已上传数据的完整路径。
BITS-Response-DataFile-Name 包含 BITS 期望服务器应用程序写入响应的完整路径。

下表显示了响应标头。

响应标头 说明
BITS-Static-Response-URL 可选。 包含绝对 URL (不指定要用作响应的静态数据文件的相对 URL) 。 静态数据文件必须由 BITS 客户端访问。 如果使用此标头,请不要创建 BITS-Response-DataFile-Name 请求标头中指定的响应文件。 请注意,BITS 不会为你删除此文件。
BITS-copy-file-to-destination 可选。 默认情况下,如果 BITSServerNotificationType 属性设置为 1 或 2,则 BITS 服务器不会将上传文件复制到作业中远程文件名指定的位置。 若要让 BITS 将文件复制到作业中远程文件名指定的位置,请发送此响应标头。 可以指定任何值;BITS 不使用该值。 请注意,远程文件路径中的文件夹必须存在。

以下请求显示 BITS 将上传文件的位置发送到服务器应用程序。

POST https://myserver/myvdir/handle_upload.asp?ACCOUNT=873112 HTTP/1.1
Host: myserver
BITS-Original-Request-URL: https://front-end-server/vdir
BITS-Request-DataFile-Name: c:\physical-path\BITS-Sessions\{5e53c221-f2d6-4bf2-
b994-1dc43ceaca8d}\request
BITS-Response-DataFile-Name: c:\physical-path\BITS-Sessions\{5e53c221-f2d6-4bf2-
b994-1dc43ceaca8d}\response
Content-Length: 0

下面显示了服务器应用程序对 BITS 的回复;答复放置在 BITS-Response-DataFile-Name 请求标头指定的文件中。

HTTP/1.1 200 - OK
Content-Length: 0

在请求正文中发送上传文件

如果 BITSServerNotificationType 属性设置为 2,则 BITS 会在请求正文中发送上传文件。 在请求正文中发送上传文件可让现有脚本和应用程序使用最少的修改。 上传文件和回复文件分别在请求和响应中传递。 下表显示了请求标头。

请求标头 说明
BITS-Original-Request-URL 包含作业中指定的远程名称。

下表显示了响应标头。

响应标头 说明
BITS-Static-Response-URL 可选。 包含绝对 URL (不指定要用作响应的静态数据文件的相对 URL) 。 静态数据文件必须由 BITS 客户端访问。 如果使用此标头,请不要在流中包含响应。 请注意,BITS 不会为你删除此文件。
BITS-copy-file-to-destination 可选。 如果 BITSServerNotificationType 属性设置为 1 或 2,则 BITS 服务器不会将上传文件复制到作业中远程文件名指定的位置。 若要让 BITS 将文件复制到远程文件名指定的位置,请发送此响应标头。 可以指定任何值;BITS 不使用该值。 请注意,远程文件路径中的文件夹必须存在。

以下请求显示将上传的文件传递到请求正文中的服务器应用程序的 BITS。

POST https://myserver/myvdir/handle_upload.asp?ACCOUNT=873112 HTTP/1.1
Host: myserver
BITS-Original-Request-URL: https://front-end-server/vdir
Content-Length: 80000

80000 bytes of upload data goes here

以下答复显示服务器应用程序将答复数据传递到响应正文中的 BITS。

HTTP/1.1 200 - OK
Content-Length: 100

100 bytes of reply data goes here

处理服务器应用程序错误

请参阅 处理服务器应用程序错误