我有一个返回字节数组的方法。然后我将此数组作为 excel 文件写入输出流。一些用户在 ie7 中报告“Internet Explorer 无法打开此 Internet 站点”错误。
在测试环境(使用 ie9)中运行它时,我没有收到此错误。但是,有时我第一次单击链接时,Excel 会打开,但我会收到一条错误消息,显示“将命令发送到程序时出现问题”并且文件不会加载到 Excel 中。如果我再次单击该链接,该文件将在 Excel 中正常打开。这是在用户单击页面上的链接后通过响应流发送字节数组的代码。
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 事件中执行。什么可能导致这些错误?我之前使用过类似的代码,没有任何问题。