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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top