Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IE 10 - File download issues

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.

like image 299
user972255 Avatar asked May 20 '13 18:05

user972255


2 Answers

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]

like image 161
jfsaliba Avatar answered Nov 19 '22 00:11

jfsaliba


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
like image 2
wwwhack Avatar answered Nov 18 '22 22:11

wwwhack