Herunterladen einer Datei über https im IE8, mit ASP.NET
Ich versuche es möglich zu machen, für die user zum download einer Excel-Tabelle von unserer Website, indem Sie eine Schaltfläche, die Umleitung durch das:
Response.Redirect(string.Format("../excel/ExcelForm.aspx?pathName=&fileNameDisplay={0}&fileNameUnique={1}", "spreadsheet.xls", fileName));
Die aspx-Seite nur sendet die Datei über das Response-Objekt, wie folgt:
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameDisplay);
Response.WriteFile(Server.MapPath(pathName + fileNameUnique));
Response.Flush();
Response.End();
Alles funktioniert Prima auf meinem Rechner, aber wenn wir setzen es auf dem server, die https in Kombination mit no-cache-Einstellungen gibt uns die Fehlermeldung "Internet Explorer kann nicht downloaden [blahblahblah]". Die cache-Einstellungen auf der Seite mit der excel-Schaltfläche:
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
HttpContext.Current.Response.AddHeader("cache-control", "private, no-cache, must-revalidate no-store pre-check=0 post-check=0 max-stale=0");
HttpContext.Current.Response.Cache.SetNoServerCaching();
Wenn ich entfernen Sie diese Zeilen, alles funktioniert Prima. Allerdings bin ich mir nicht erlaubt Sie zu entfernen, aus anderen Gründen. So habe ich versucht, indem Sie die folgende Zeile, um die ExcelForm.aspx, kurz bevor es fügt Dinge auf den Kopf:
Response.ClearHeaders();
Das macht mir einfach "Internet Explorer kann nicht downloaden ExcelForm.aspx von [url]". Und das ist, wo ich stecken geblieben bin. Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem bei mir vor kurzem beim exportieren von CSV-Dateien aus einem MVC-controller-Methode. Ich fand, dass das hinzufügen:
Löste das problem für mich im IE
Hoffe, das hilft!
Ich auch vor dem gleichen Problem,
Als ich es gegoogelt habe, fand ich, dass "keine chache" Einstellungen im response-header, d.h. folgende code ist der Grund für das Problem.
Einige der blogs, die sagt, um dieses Problem zu beheben, müssen Sie einige änderungen in Windows-Registrierung auf Webserver und auf allen client-Computern(:O), sowie es nicht möglich ist, zu tun, registry-Einstellungen auf jedem client-Rechner.
Die Ursache ist die no-cache-Einstellungen in der response-header, so dass ich nur Hinzugefügt
bevor neue Inhalte heruntergeladen werden, um die response-header. Der code ist wie unten gezeigt,
Es hat das Problem beseitigt.
Genießen!!!
Ich hatte das exakt gleiche Problem, ich war nicht in der Lage zum download binären Datenstrom Trog IE8
Entsprechend den Informationen auf dieser Seite, mein neuer code sieht wie
und jetzt funktioniert es wie ein Charme, der unter allen Browsern