Question

Le code suivant ne fonctionnera pas correctement dans IE7 avec les derniers service packs installés.

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

J'ouvre la page aspx avec js (window.open ()) et exécute le code ci-dessus dans le Page_Load ().

Ce qui est étrange, c’est que la fenêtre s’ouvre, tente de charger / afficher la boîte de dialogue de fichier, puis vous entendez le son comme si une fenêtre contextuelle avait été bloquée (bien que le bloqueur de fenêtres contextuelles soit désactivé!).

Information supplémentaire:
- Le problème se produit à la fois sur XP et W2k3 (qui est un vrai serveur Web sans autre installation que celle installée avec IE7 & FW 3.5 SP1 & les derniers service packs.) - Le même code fonctionne bien avec FW 2.0 - Firefox n’a aucun problème pour afficher une boîte de dialogue de fichier.

Je serais curieux de savoir si quelqu'un d'autre a rencontré le même problème et pourrait fournir une solution pour que la chose fonctionne dans IE7.

À la vôtre,
Dimi

Était-ce utile?

La solution

Ajoutez un en-tête indiquant explicitement à IE d’utiliser le fichier CACHE. IE a rencontré des bugs qui empêchent de sauvegarder correctement un fichier s'il est envoyé en tant que fichier sans cache.

Autres conseils

J'ai eu le même problème et j'ai passé une heure à être totalement frustré. Comme d'habitude, les navigateurs IE de Microsoft sont à l'origine de tous les maux de tête. Tout a bien fonctionné dans les autres navigateurs. La solution est simple: L’utilisateur devra ajuster un paramètre IE7 en allant à "Outils" > "Options Internet" > Onglet "Sécurité" > Pour "Internet" et / ou "Intranet local", ajustez les paramètres de sécurité en cliquant sur le bouton "Personnaliser le niveau ..."

Accédez au nœud "Téléchargements" '> Invite automatique pour les téléchargements de fichiers '> cocher 'Activer'

Cela a résolu le problème pour mes utilisateurs.

L’espoir que cela aide.

Si ce problème se produisait sur notre intranet, la demande automatique de téléchargement ne fonctionnait pas pour moi (elle était déjà sélectionnée), mais cela…

Outils - > Options Internet

Dans l'onglet Sécurité, sélectionnez ‘Intranet local 'puis cliquez sur Sites

Cliquez sur Avancé

Tapez "http://votre.url.com" et cliquez sur Ajouter

Cliquez sur Fermer - > Ok - > Ok

espérons que cela fonctionne pour vous aussi;)

Je n'arrive toujours pas à faire en sorte que la boîte de dialogue ne disparaisse pas. Cela se produit lorsque l’application accède à une [méthode Web] pour rassembler des informations à transmettre à la page qui tente de télécharger les résultats dans Excel.

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

Cela ne semble également se produire que lorsque vous accédez au site Web avec une adresse IP (999.11.1.111 \ default.aspx ....). Cela fonctionne quand on y accède via loacalhost \ default.aspx

Pour vérifier si la sécurité est à l'origine de ce problème, définissez la cible sur _self. La barre d'avertissement au-dessus d'IE devrait apparaître. Si cela est la cause, vérifiez la sécurité IE. Plus précisément, l'invite pour le téléchargement d'une partie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top