Here's the official word on what the problem is, from MS tech support:
In IIS7.5 we have implemented an optimization code that handles especially byte-ranges request whose result is a single range as follows.
When a client makes a request of byte-ranges whose result is a single range, IIS 7.5 does not include the media type in the response! This seems to break Adobe-reader add-on in IE.
In IIS7 and below we treated byte-ranges requests whose result is a single range the same manner as byte-ranges requests whose result is NOT a single range meaning that we all the time sent a media type in the response header.
Example:
The below request:
Command: GET
+ URI: /test.pdf
ProtocolVersion: HTTP/1.1
Accept: */*
Range: bytes=153572-186237, 748935-750373, 748238-748934, 186238-411153, 750374-750792, 411154-486125, 486126-748237
…
…
Is equivalent to making a request to range 153572 - 750792
IIS7 will respond with
- Http: Response, HTTP/1.1, Status Code = 206, URL: /test.pdf
ProtocolVersion: HTTP/1.1
StatusCode: 206, Partial content
Reason: Partial Content
ContentType: multipart/byteranges; boundary=<q1w2e3r4t5y6u7i8o9p0zaxscdvfbgnhmjklkl>
…
…
IIS 7.5 will respond with
ProtocolVersion: HTTP/1.1
StatusCode: 206, Partial content
Reason: Partial Content
ContentType: application/pdf
…
…
So in the case of IIS7.5, it is just like we are responding to a single range request “153572 - 750792 “ in which the HTTP RFC says that you should NOT send a media type in the response header!
The IIS 7 and IIS7.5 behavior are both HTTP RFC compliant
A response to a request for a single range MUST NOT be sent using the
multipart/byteranges media type. A response to a request for
multiple ranges, whose result is a single range, MAY be sent as a
multipart/byteranges media type with one part. A client that cannot
decode a multipart/byteranges message MUST NOT ask for multiple
byte-ranges in a single request.