【发布时间】:2010-12-13 12:27:15
【问题描述】:
我试图让用户可以从我们的网站下载 Excel 电子表格,方法是通过一个按钮重定向:
Response.Redirect(string.Format("../excel/ExcelForm.aspx?pathName=&fileNameDisplay={0}&fileNameUnique={1}", "spreadsheet.xls", fileName));
aspx页面只是通过Response对象发回文件,像这样:
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameDisplay);
Response.WriteFile(Server.MapPath(pathName + fileNameUnique));
Response.Flush();
Response.End();
在我的机器上一切正常,但是当我们将它放在服务器上时,https 与无缓存设置相结合,会给我们一个错误,提示“Internet Explorer 无法下载 [blahblahblah]”。显示excel按钮的页面缓存设置:
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Expires = 0;
HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
HttpContext.Current.Response.AddHeader("cache-control", "private, no-cache, must-revalidate no-store pre-check=0 post-check=0 max-stale=0");
HttpContext.Current.Response.Cache.SetNoServerCaching();
当我删除这些行时,一切正常。但是,由于其他原因,我不允许删除它们。因此,我尝试在 ExcelForm.aspx 将内容添加到标题之前添加以下行:
Response.ClearHeaders();
这只是给我“Internet Explorer 无法从 [url] 下载 ExcelForm.aspx”。这就是我卡住的地方。有什么建议吗?
【问题讨论】: