Response.AddHeader附件不起作用

时间:2012-04-12 00:48:20

标签: c# asp.net

这是我的代码:

                Response.Clear();
                Response.AddHeader("content-disposition", "attachment;  filename=file.xlsx");
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.BinaryWrite(pck.GetAsByteArray());
                Response.End();

问题是当运行此代码时(单击按钮)我在浏览器中没有要下载的文件(在Chrome \ IE中尝试过)。

pck是一个excel文件(使用epplus库生成)。 我甚至不知道如何调试这部分代码。它什么都不做。

以下是我在浏览器中收到的错误:

  

未捕获的Sys.WebForms.PageRequestManagerParserErrorException:   Sys.WebForms.PageRequestManagerParserErrorException:消息   从服务器收到的邮件无法解析。常见原因   错误是通过调用Response.Write()修改响应时,   启用了响应过滤器,HttpModules或服务器跟踪。

     

详细信息:在'PKX @π '附近解析时出错。

2 个答案:

答案 0 :(得分:2)

我相信您正在使用更新面板。执行异步回发时无法下载文件。添加将下载文件的按钮作为更新面板的Postback触发器。

答案 1 :(得分:0)

你走在正确的轨道上。我想你错过了几行:

Response.Clear();
Response.AddHeader("content-disposition", "attachment;  filename=file.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.BinaryWrite(pck.GetAsByteArray());
Response.Flush();
Response.Close();
Response.End();