IE 10 – Problemi di download di file

Sto provando a scaricare un file excel (generato dynamicmente usando C # \ ASP.NET) e ottengo la finestra di dialogo Download di IE10 View quando faccio clic su “Apri”, si dice che l’errore “abc.xls non può essere scaricato” ma dopo aver cliccato su ” Riprova “apre correttamente il file .xls nel secondo tentativo.

Quando eseguo il test in Firefox o Chrome, funziona perfettamente.

Penso che questo possa spiegare lo strano comportamento:

“Convalida Content-Length e Transfer-Encoding in IE10 Download Manager”

Sembra che la versione beta di IE9 abbia introdotto la convalida della content-length e transfer-encoding durante il download dei file, ma ha riscontrato che era troppo problematico dal momento che molti server non inviavano valori corretti per questi download elaborati attraverso il codice. A quanto pare hanno girato su IE10, e speravano solo per il meglio.

Scommetterei che i valori precisi che vengono inviati all’avvio del download dovrebbero chiarire questo problema. Certo, non dovrebbe essere stato un problema iniziare con … ai yi yi.

[Modificare]

Risulta che questo problema era correlato (almeno per me) con l’uso di Response.Close() e / o Response.End() nel codice . Questo articolo spiega perché non si dovrebbero usare questi 2 metodi e perché HttpApplication.CompleteRequest è il metodo di scelta. La modifica delle istanze Response.End() e Response.Close() su HttpApplication.CompleteRequest risolto i problemi di download di IE10. Come la magia Apparentemente MSDN ora scoraggia l’uso di questi 2 metodi (nonostante anni di esempi di codice MSDN che li contengono), e ora sostiene l’uso di HttpApplication.CompleteRequest .

Siamo sempre stati in guerra con l’Eurasia …

[/Modificare]

Stavo diventando un comportamento simile – Dopo aver affrontato questo problema per circa 12 ore, ciò che ha funzionato per me:

Modifica dell’intestazione della risposta da

Content-Type: application / application / vnd.ms-excel

A

Content-Type: application / octet-stream

Si noti che ho avuto un altro sintomo non menzionato: stavo impostando

Content-Disposition: attachment; filename = “Inventory_10-10-2013.xls”

Nonostante questa impostazione, IE ha usato il nome del file dall’URL (quindi ha detto “getInventory non può essere scaricato” – e ha salvato il file con nome errato nella cartella dei download!).

Quando ho cambiato il “Content-Type”, IE ha iniziato a onorare il nome del file dall’intestazione.

Per la cronaca qui ci sono tutte le intestazioni di risposta che sto impostando:

  • HTTP / 1.1 200 OK
  • Pragma: pubblico
  • Scade: ven, 11 ott 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
  • Lunghezza del contenuto: 7680
  • Data: gio, 10 ott 2013 16:33:38 GMT