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?

InformationsquelleAutor Peter Evjan | 2009-11-05
Schreibe einen Kommentar