2009-11-04 3 views
2

Je crée un fichier csv à la volée dans mon application Web ASP.NET et l'envoyer à l'utilisateur en utilisant le code suivantHtml ajouté à Télécharger le fichier en réponse

ExportPlacementListPostModel postModel = CreatePostModelFromRequest(); 
MemoryStream stream = PlacementDatabaseController.ExportPlacementList(postModel); 
Response.Clear(); 
Response.ClearContent(); 
Response.ClearHeaders(); 
Response.AddHeader("content-disposition", "attachment; filename=studentplacement.csv"); 
Response.ContentType = "application/octet-stream"; 
Response.BinaryWrite(stream.GetBuffer()); 

Chaque fois que je télécharger le fichier html des pages web est ajouté sur le document.

Quelqu'un peut-il voir ce que je fais mal ici.

Colin G

Répondre

8

Appel Response.End() après Response.BinaryWrite pour empêcher une nouvelle sortie en cours d'écriture à la réponse.

+0

Le Response.End() réponse de pmarflee est probablement approprié, mais je crois que vous pouvez aussi le faire: retour; –

+0

une idée pourquoi cela se produirait sur un serveur mais pas un autre? – Wjdavis5

1

HttpContext.Current.ApplicationInstance.CompleteRequest peut également être utilisé.

La méthode CompleteRequest permet à ASP.NET de contourner tous les événements et le filtrage dans la chaîne d'exécution du pipeline HTTP et d'exécuter directement l'événement EndRequest.

La méthode Response.End met fin à l'exécution de la page et décale l'exécution vers l'événement Application EndRequest dans le pipeline d'événements de l'application. La ligne de code qui suit Response.End n'est pas exécutée.

est ici une bonne lecture: Don’t use Response.End() with OutputCache

Questions connexes