ASP.NET Response.BinaryWrite在创buildExcel文件时抛出错误
我有一个方法返回一个字节数组。 然后我把这个数组写到输出stream中作为一个excel文件。 有些用户报告ie7中“Internet Explorer无法打开这个网站”的错误。
当我在testing环境(使用ie9)中运行它时,我没有得到这个错误。 不过有时候我第一次点击这个链接时,Excel将会打开,但是我会收到一个错误信息,读“发送命令到程序时出现问题”,并且这个文件没有加载到Excel中。 如果我再次单击该链接,该文件将以Excel打开。 这是用户点击页面上的链接后,通过响应stream发送字节数组的代码。
byte[] buffer = GetBinary(); Response.ContentType = "application/vnd.ms-excel"; Response.Buffer = true; Response.Expires = 0; Response.AddHeader("Content-Type", "application/vnd.ms-excel"); Response.AddHeader("Content-Length", buffer.Length.ToString()); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.AddHeader("Content-Disposition", "attachment;filename=xx.xls"); Response.BinaryWrite(buffer); Response.End();
如果有任何区别,他们点击的链接会打开一个新窗口,上面的代码块将在新页面的page_load事件中执行。 什么可能导致这些错误? 我以前使用过类似的代码,没有问题。