enregistrer le document créé par docX en réponse et l'envoyer à l'utilisateur pour le téléchargement

Je suis en train d'utiliser l'incroyable DocX bibliothèque sur codeplex pour créer un document word.

lorsque l'utilisateur clique sur un bouton, le document est créé et je veux être en mesure de l'envoyer immédiatement à l'utilisateur via de réponse.. je suis en train de faire quelque chose de similaire à ceci maintenant:

Modifié le code en se basant sur les suggestions

using (DocX Report = DocX.Create(string.Format("Report-{0}.doc", DateTime.Now.Ticks)))
{
    Paragraph p = Report.InsertParagraph();
    p.Append("Title").FontSize(30).Bold()
    .Append("Sub title").FontSize(28)
        .AppendLine()
        .Append(DateTime.Now.Date) 
    ;

    MemoryStream ms = new MemoryStream();
    Report.SaveAs(ms);


    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + ".docx\"");
    Response.ContentType = "application/msword";

    Response.Write(ms);
    Response.End();
}

J'ai essayé quelques variantes de ce.. mais je ne suis pas en mesure de réaliser ce que je veux.. En regardant cette réponse je peux éventuellement enregistrer le document sur le serveur et ouvrez-le avec io ruisseau.. mais je veux éviter cette étape supplémentaire (et puis j'ai besoin de supprimer le fichier trop)

Je ne vois pas l'intérêt de la création d'un fichier de quelques milli secondes.. il y a un moyen de sauvegarder le contenu et les envoyer à des flux de réponse..?

Comment avais-je faire?
merci..

EDIT: mon code actuel soit vomit impossible d'ouvrir le fichier (Accès refusé) erreur Si je suis en utilisant le fichier de flux, OU télécharge un document vide de fichier sans contenu (parfois, le type de réponse est écrite dans le document)


Ce code m'obtient un document MS word avec System.IO.MemoryStream comme c'est le contenu..


Ok, c'est la dernière solution de travail:

Pour une raison quelconque, DocX bibliothèque ne souhaitez pas enregistrer de Response.OutputStream directement, donc j'ai dû l'enregistrer dans la mémoire de flux et écrire le flux de mémoire de réponse, comme Neil & Daniel suggéré. Voici ce qui a fonctionné pour moi:

MemoryStream ms = new MemoryStream()
Report.SaveAs(ms);

Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + ".doc\");
Response.ContentType = "application/msword";

ms.WriteTo(Response.OutputStream);
Response.End();
Ce qui se passe avec ton code actuel?
modifié le code pour vous répondre, merci!
Je suis confus qui répondent à accepter, j'ai pu voter deux fois comme m'a aidé...
Grâce LocustHorde pour votre question et votre dernière solution de travail. Il ne m'aident beaucoup.

OriginalL'auteur LocustHorde | 2012-01-24