Frage

Der folgende Code wird nicht korrekt in IE7 mit dem neuesten Service Pack installiert ausgeführt werden.

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();

Ich bin die aspx-Seite mit js Öffnung (window.open ()) und den obigen Code in der Page_Load () auszuführen.

Das Merkwürdige ist, dass das Fenster erscheint, versucht, den Datei-Dialog zu laden / zeigen und Sie dann hören das Geräusch wie ein Popup-Fenster blockiert wurde (obwohl Popup-Blocker deaktiviert ist!).

Weitere Information:
- Das Verhalten geschieht sowohl auf XP und W2k3 (das ist ein echter Web-Server ohne etwas anderes installiert, aber IE7 & FW 3.5 SP1 und aktuellen Service Pack.) - Der gleiche Code funktioniert gut mit FW 2.0 -. Firefox hat keine Probleme einen Dateidialog angezeigt werden

Ich wäre neugierig, wenn jemand anderes in das gleiche Problem hat läuft und eine Lösung für das Erhalten der Sache in IE7 Arbeit bieten könnte.

Cheers,
Dimi

War es hilfreich?

Lösung

Fügen Sie eine Kopfzeile zu sagen IE explizit , um die Datei cachen. IE hat bekannte Fehler mit nicht richtig in der Lage, eine Datei zu speichern, wenn sie als No-Cache-Datei gesendet wird.

Andere Tipps

Ich hatte das gleiche Problem, und verbrachte eine Stunde völlig frustriert zu sein. Wie üblich Microsoft IE-Browser ist die Wurzel aller Kopfschmerzen. Alles hat gut funktioniert in anderen Browsern. Die Lösung ist einfach: Der Benutzer muss eine IE7 Einstellung anzupassen, indem Sie auf ‚Extras‘> ‚Internetoptionen‘> ‚Sicherheit‘ Tab> Für ‚Internet‘ und / oder ‚Lokales Intranet‘ stellen Sie die Sicherheitseinstellungen durch Anklicken der Schaltfläche ‚Stufe anpassen ...‘

Gehen Sie

auf den 'Downloads' Knoten '> Automatische Eingabeaufforderung für Dateidownloads'> Überprüfen Sie 'Aktivieren'

Dass es für meine Nutzer festgelegt.

Ich hoffe, das hilft.

Wir hatten dieses Problem in unserem Intranet, automatische Aufforderung für Downloads nicht für mich arbeiten (wurde bereits ausgewählt) aber das hat ...

Extras -> Internetoptionen

Auf Registerkarte Sicherheit wählen Sie ‚Lokales Intranet‘ und dann auf Sites

Klicken Sie auf Erweitert

Typ „http://your.url.com“ und klicken Sie auf Hinzufügen

Klicken Sie auf Schließen -> Ok -> Ok

hoffen, dass diese für Sie arbeitet auch;)

Ich kann immer noch nicht das Dialogfeld nicht verschwinden. Dies geschieht, wenn die Anwendung greift auf einem [Webmethod] Informationen zu sammeln, um die Seite zu übergeben, der beim Download der Ergebnisse versucht, zu übertreffen.

            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();

Dies scheint auch nur zu geschehen, wenn die Bahn sitzt Zugriff auf eine IP-Adresse (999.11.1.111 \ default.aspx ....). Es funktioniert, wenn es über loacalhost \ default.aspx

Zugriff

Um zu testen, ob die Sicherheit dieses Problem verursacht, das Ziel gesetzt, auf _self. Die Warnleiste am oberen Rand des IE sollte angezeigt werden. Wenn dies die Ursache ist, überprüfen die Sicherheit IE. Insbesondere die Aufforderung zum Herunterladen Teil.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top