J'ai donc une page sur laquelle je génère dynamiquement une table et des boutons de liaison dans un grand UpdatePanel. Chaque bouton de lien lorsque vous cliquez dessus entraînera l'appel de cette méthode. L'objectif est de faire pointer le lien vers un fichier dans ma base de données et de cliquer sur cette option pour permettre à l'utilisateur d'ouvrir/enregistrer ce fichier. Cette méthode fonctionne très bien sur une autre page de mon site avec généralement la même configuration mais sur celui-ci je reçois:Télécharger le fichier par programme ASP.NET
Erreur d'exécution de Microsoft JScript: Sys.WebForms.PageRequestManagerParserErrorException: Le message reçu du serveur n'a pas pu être analysé . Les causes courantes de cette erreur sont lorsque la réponse est modifiée par les appels à Response.Write(), les filtres de réponse, HttpModules ou la trace du serveur est activée. Détails: Erreur d'analyse près de '% PDF-1.3 % 1 0 ob'.
public void downloadFile(int fileID)
{
using (SurveyDataContext context = new SurveyDataContext())
{
try
{
var file = context.tblFiles.Single(f => f.FileID == fileID);
Response.Clear();
Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = file.MIMEtype;
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + file.FileName.Trim() + "\"");
Response.AddHeader("Extension", file.FileName.Substring(
file.FileName.LastIndexOf('.') + 1).ToLower());
Response.BinaryWrite(file.FileData.ToArray());
Response.Flush();
Response.End();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.InnerException);
}
}
}
Qu'est-ce que je fais mal? Je ne fais pas de Response.Writes ou quoi que ce soit. Cette méthode est la seule qui touche la réponse. Y a-t-il un autre moyen de le faire?
J'ai essayé d'ajouter Response.Flush et il n'a pas aidé. Je ne vois pas la différence entre mon code et l'échantillon Excepté j'utilise Response.BinaryWrite et ils utilisent Response.FileWrite mais je n'ai pas de fichier sur le système de fichiers, donc FileWrite ne fonctionnera pas. – jamone