问题
I'm trying to download an excel file (generated dynamically using C#\ASP.NET) and I get the IE10 View Downloads dialog when I click "Open" it says "abc.xls couldn't be downloaded" error but after clicking "Retry" it opens the .xls file properly in the second try.
When I test this in Firefox or Chrome it works fine.
回答1:
I think this may explain the strange behaviour:
"Content-Length and Transfer-Encoding Validation in the IE10 Download Manager"
It seems that IE9 beta had introduced content-length
and transfer-encoding
validation when downloading files, but found it was too problematic since many servers didn't send proper values for these downloads that are processed through code. Apparently they turned it back on in IE10 however and just hoped for the best.
I'd wager that accurate values being sent when the download is started should clear up this problem. Of course, it shouldn't have been a problem to begin with... ai yi yi.
[Edit]
Turns out this problem was related (for me at least) with using Response.Close()
and/or Response.End()
in code. This article explains why you shouldn't use these 2 methods, and why HttpApplication.CompleteRequest
is the method of choice. Changing our Response.End()
and Response.Close()
instances to HttpApplication.CompleteRequest
solved our IE10 download issues. Like magic. Apparently MSDN now discourages use of these 2 methods (despite years of MSDN code examples containing them), and now advocates use of HttpApplication.CompleteRequest
instead.
We were always at war with Eurasia...
[/Edit]
回答2:
I was getting a similar behavior - After fighting this issue for about 12 hours what worked for me:
Changing response header from
Content-Type: application/application/vnd.ms-excel
To
Content-Type: application/octet-stream
Note that I had another an unmentioned symptom: I was setting
Content-Disposition: attachment; filename="Inventory_10-10-2013.xls"
Despite that setting IE used the file name from the URL (so it said "getInventory couldn't be downloaded" - and it saved the wrongly named file in the downloads folder!).
When I changed the 'Content-Type' IE started honoring the file name from the header.
For the record here are all the response headers that I'm setting:
- HTTP/1.1 200 OK
- Pragma: Public
- Expires: Fri, 11 Oct 2013 16:33:38 GMT
- Cache-Control: max-age=1
- Content-Disposition: attachment; filename="Inventory_10-10-2013.xls"
- Content-Transfer-Encoding: BINARY
- Set-Cookie: fileDownload=true; path=/
- Content-Type: application/octet-stream;charset=UTF-8
- Content-Length: 7680
- Date: Thu, 10 Oct 2013 16:33:38 GMT
来源:https://stackoverflow.com/questions/16655566/ie-10-file-download-issues