OK, I've spent half a day on this issue and have not been able to resolve it. I have tried changing the order of the headers and changing which headers are sent out, but my power is, alas, limited. I find that .net actually overrides some of this. So the Content-Type is never sent at the beginning, but only after Content-Length
This is a successful request (directly
http://...whatever/somemovie.mov):HTTP/1.1 200 OK
Content-Type: video/quicktime
Last-Modified: Sun, 06 Oct 2002 17:38:20 GMT
Accept-Ranges: bytes
ETag: "0e2e295f6dc21:0"
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Mon, 10 Mar 2008 10:08:44 GMT
Content-Length: 5420732
And this is a failed one (through asp.net):
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 5420732
Content-Type: video/quicktime
Last-Modified: Mon, 10 Mar 2008 10:43:27 GMT
Accept-Ranges: bytes
ETag: "file_20080310_104326_RsT_0.resources"
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 10 Mar 2008 10:47:01 GMT
Note that I don't think the http specifications allow browsers to change behavior subject to header order. I believe the order is specified as arbitrary. But if you do a little Googling on server files, you'll see it is a minefield, with each browser manufacturer doing what he/she believes is best. Not cool for programmers.
Note: I did verify the bytes being transmitted and they matched.
I'll devote more time to this in due course. But if the worst comes to the worst I'd have to write my own handler (i.e. full control over what goes out over the wire to the client). This is not an attractive prospect. It means more potential points of failure and a more complex installation.
Peter