La finestra di download dei file IE7 scompare
-
05-07-2019 - |
Domanda
Il seguente codice non verrà eseguito correttamente in IE7 con gli ultimi service pack installati.
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Disposition", "attachment;filename=Contacts.xls");
response.ContentType = "application/octet-stream";
System.Text.UnicodeEncoding Encoding = new System.Text.UnicodeEncoding();
byte[] unicodeBytes = {255,254};
int length = 2 + Encoding.GetByteCount(_exportContent); // _exportContent is string.
response.AddHeader("Content-Length", length.ToString());
response.OutputStream.Write(unicodeBytes, 0, 2);
unicodeBytes = Encoding.GetBytes(_exportContent);
response.OutputStream.Write(unicodeBytes, 2, unicodeBytes.Length);
response.End();
Sto aprendo la pagina aspx con js (window.open ()) ed eseguo il codice sopra in Page_Load ().
La cosa strana è che la finestra si apre, cerca di caricare / mostrare la finestra di dialogo del file e poi senti il ??suono come se una finestra popup fosse bloccata (sebbene il blocco popup sia disattivato!).
Informazioni extra:
- Il comportamento si verifica sia su XP che su W2k3 (che è un vero web server senza nient'altro installato tranne IE7 & FW 3.5 SP1 & amp; service pack più recenti).
- Lo stesso codice funziona bene con FW 2.0
- Firefox non ha problemi a visualizzare una finestra di dialogo dei file.
Sarei curioso di sapere se qualcun altro ha riscontrato lo stesso problema e potrebbe fornire una soluzione per far funzionare la cosa in IE7.
Saluti,
Dimi
Soluzione
Aggiungi un'intestazione che dice a IE esplicitamente a CACHE il file. IE ha riscontrato bug che non sono in grado di salvare correttamente un file se viene inviato come file senza cache.
Altri suggerimenti
Ho avuto lo stesso problema e ho trascorso un'ora completamente frustrato. Come al solito, i browser Microsoft IE sono la radice di tutti i mal di testa. Tutto ha funzionato bene in altri browser. La soluzione è semplice: L'utente dovrà regolare un'impostazione IE7 andando a "Strumenti" > "Opzioni Internet" > Scheda "Sicurezza" > Per "Internet" e / o "Intranet locale", modifica le impostazioni di sicurezza facendo clic sul pulsante "Livello personalizzato ..."
Vai al nodo "Download" > Richiesta automatica di download di file "> seleziona "Abilita"
Ciò è stato risolto per i miei utenti.
Spero che sia d'aiuto.
Ho riscontrato questo problema sulla nostra intranet, la richiesta automatica di download non ha funzionato per me (era già selezionata) ma questo ha funzionato ...
Strumenti - > Opzioni Internet
Nella scheda Sicurezza seleziona & # 8216; Intranet locale & # 8217; quindi fai clic su Siti
Fai clic su Avanzate
Digita & # 8220; http: //tuo.url.com” e fai clic su Aggiungi
Fai clic su Chiudi - > Ok - > Ok
spero che funzioni anche per te;)
Non riesco ancora a far scomparire la finestra di dialogo. Ciò accade quando l'applicazione accede a un [metodo web] per raccogliere informazioni da passare alla pagina che sta provando a scaricare i risultati per eccellere.
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileNameToUse + "\"");
Response.CacheControl = "Public";
Response.Write(output);
Response.Flush();
Response.Close();
Questo sembra accadere anche solo quando si accede al Web sit usando un indirizzo IP (999.11.1.111 \ default.aspx ....). Funziona quando si accede tramite loacalhost \ default.aspx
Per verificare se la sicurezza causa questo problema, impostare la destinazione su _self. Dovrebbe apparire la barra di avviso in cima a IE. Se questa è la causa, controlla la sicurezza di IE. In particolare il prompt per la parte di download.