2009-04-21 7 views
3

J'ai hérité d'une ancienne application qui stocke un fichier zip dans une base de données et a besoin de récupérer ce fichier. Dans Firefox fonctionne très bien, je peux ouvrir le zip et chaque fichier à l'intérieur est très bien. Lorsque je l'exécute dans IE7, j'obtiens l'erreur suivante.L'écriture d'un fichier zip ne fonctionne pas dans IE7

Internet Explorer ne peut pas télécharger ProductContentFormImage.aspx depuis localhost.

Internet Explorer n'a pas pu ouvrir ce site Internet. Le site demandé est indisponible ou introuvable. Veuillez réessayer plus tard.

J'utilise le code ci-dessous.

byte[] content = (byte[])Session["contentBinary"]; 

Response.ClearContent(); 
Response.ClearHeaders(); 
Response.Clear(); 

Response.Buffer = true; 
Response.Expires = 0; 
Response.ContentType = "application/zip"; 
Response.AddHeader("Content-Length", content.Length.ToString()); 
Response.AddHeader("Content-Disposition", "attachment; filename=content.zip"); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.BinaryWrite(content); 
Response.End(); 

Répondre

6

Ceci est un petit bug étrange spécifique à IE.

Fondamentalement, le problème se présente lorsque vous définissez votre expiration à 0.

IE va essentiellement par le processus suivant:

  1. IE détermine que le fichier est quelque chose à être « téléchargé », qui provoque IE à ouvrir la fenêtre contextuelle Téléchargement de fichier. Une fois que l'utilisateur clique sur "Ouvrir" ou "Enregistrer", IE essaie de télécharger le fichier, mais comme il est configuré pour expirer immédiatement, IE se déclenche.

Définissez votre expiration à un petit nombre différent de zéro comme 1 minute et vous devriez voir le problème disparaître.

1

J'ai trouvé que la mise à HttpCacheability fixe privé la question

context.Response.Cache.SetCacheability(HttpCacheability.Private); 
Questions connexes