【发布时间】:2010-02-01 16:52:19
【问题描述】:
所以我有一个页面,我在该页面上动态生成一个表和链接按钮,所有这些按钮都在一个大的 UpdatePanel 中。单击每个链接按钮都会导致调用此方法。目标是让链接指向我的数据库中的文件,并在单击时允许用户打开/另存为该文件。这种确切的方法在我网站的另一个页面上运行良好,设置通常相同,但在这个我得到:
Microsoft JScript 运行时错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器接收到的消息。此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用了服务器跟踪来修改响应。 详细信息:在 '%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);
}
}
}
我做错了什么?我没有做任何 Response.Writes 或任何事情。此方法是唯一涉及响应的方法。还有其他方法我应该这样做吗?
【问题讨论】: