2009-06-04 8 views
0

Dans notre application, nous avons souvent un bouton qui va effectuer un retour, obtenir des données, le convertir en Excel/PDF, et le diffuser au client via Response.Write ou Response.BinaryWrite. Cela fonctionne parfaitement bien quand nous sommes dans un popup ou non.Fichier ASP.NET Problème de téléchargement

Nous venons d'implémenter une nouvelle fonctionnalité qui crée un fichier msg. Cependant, nous recevons une erreur lors de la diffusion vers le client (même code qu'avant) - "Internet Explorer ne peut pas ouvrir ce site". Nous redirigeons vers une autre page avec un paramètre de chaîne de requête indiquant le fichier pour lequel obtenir les octets et le diffuser vers le client.

Quelqu'un at-il déjà vécu cela? Cette fonctionnalité fonctionne très bien sur les machines de développement mais dans la mise en scène (Server 2003, IIS 6) il est cassé et lève cette erreur

+0

Pour les fichiers volumineux, je crois que Response.TransmitFile est préférable à utiliser que Response.Write/BinaryWrite. – Kane

+0

Je suis d'accord avec Kane. –

Répondre

0

Pourrait-il être un problème de droits? L'excel/pdf que vous créez - est-il enregistré dans un fichier, puis forcé de téléchargement? Si la réponse est oui, le système WEB-User-IIS a/c doit avoir accès à la zone de fichier/dossier dans laquelle le fichier est sauvegardé.

J'ai rencontré un problème similaire lorsque je créais des fichiers Excel en utilisant Microsoft.Excel ou Excel (COM) d'ASP.Net - cela fonctionnerait sur ma machine Dev (je suis l'administrateur local), mais ne fonctionnerait pas sur le serveur.

Le fichier sur le serveur est créé sous le compte de l'administrateur. Ainsi, le compte Web-User-IIS n'aura pas accès à ce fichier et ne pourra donc pas y accéder. Il existe une option dans IIS pour modifier l'utilisateur sous les comptes desquels Excel s'exécute via IIS. En outre, application/octet-stream en tant que type MIME a toujours fonctionné correctement pour l'extraction de fichiers à télécharger.

0

J'ai fait des choses très similaires à cela. Sans voir votre code, il est impossible de dire exactement ce que votre problème est, mais voici quelques choses à vérifier:

  • Vous définissez le Response.ContentType le type MIME correct pour le fichier?
  • Appelez-vous Response.End() une fois que vous avez écrit les octets du fichier. Si ce n'est pas le cas, la page HTML peut être ajoutée au fichier qui le corrompra.
+0

Nous définissons le Response.ContentType sur la valeur correcte. La chose étrange est la page de flux de fichier est utilisé dans un autre endroit et ça fonctionne bien. C'est juste dans cette situation que ça ne marche pas. Nous avons fait un job-around qui fait le travail (en cliquant sur un lien pour télécharger), mais ça me dérange pourquoi ça ne marche pas. – bdowden

Questions connexes