Pet*_*jan 8 c# asp.net excel https
我试图让用户从我们的网站下载Excel电子表格,通过一个重定向的按钮:
Response.Redirect(string.Format("../excel/ExcelForm.aspx?pathName=&fileNameDisplay={0}&fileNameUnique={1}", "spreadsheet.xls", fileName));
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
在我的机器上一切正常,但是当我们将它放在服务器上时,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();
Run Code Online (Sandbox Code Playgroud)
当我删除这些行时,一切正常.但是,由于其他原因,我不允许删除它们.所以我尝试在将标题添加到标题之前将以下行添加到ExcelForm.aspx:
Response.ClearHeaders();
Run Code Online (Sandbox Code Playgroud)
这只是给了我"Internet Explorer无法从[url]下载ExcelForm.aspx".那就是我被困住的地方.建议?
Jam*_*xon 15
我最近在从MVC控制器方法导出CSV文件时遇到了类似的问题.我发现添加:
Response.ClearHeaders();
Response.Clear();
Run Code Online (Sandbox Code Playgroud)
在IE中解决了我的问题
希望这可以帮助!