我正在开发一个应用程序,允许用户下载具有常规内容(不大于几 Mb)的 excel 文件。
在 IE9 上,文件可以完美下载,但在 IE8 上,某些允许下载的页面无法正常工作。
一个新页面会立即打开和关闭,而不显示下载栏。
缓存控制标头设置为私有。
我已经禁用了我所有的 IE8 添加的。
我已经将服务器的响应与允许保存文件的页面和不工作的页面进行了匹配,并且它们完全匹配(除了路径)
我不知道为什么在某些情况下文件可以完美下载,而在其他情况下却没有。
这是我用来下载文件的服务器端代码:
protected void GetExportedFile()
{
string filename = Form("filename");
if (string.IsNullOrEmpty(filename))
{
Logger.Instance.Write("GetExportedFile is missing the parameter filename");
Response.Redirect("ErrorPage.aspx");
}
string filePath = Context.Server.MapPath("****/****/" + filename);
Response.ClearHeaders();
Response.ClearContent();
SetContentType(ContentType.Excel);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
Response.WriteFile(filePath);
Response.Flush();
try
{
File.Delete(filePath);
}
catch (Exception ex)
{
Logger.Instance.Write(
"GetExportedFile failed to delete the file '" + filePath +
"', Error: " + ex.ToString(), "Error");
}
try
{
Response.End();
}
catch (ThreadAbortException ex)
{
//Don't add anything here.
//because if you write here in Response.Write,
//that text also will be added to your text file.
}
}
我不得不提一下,虽然我认为在 IE8 上不起作用的下载之前,我正在做一些 ajax 调用以获取通知,如果 excel 生成已经完成,而在有效的页面上我不这样做程序。
我还想补充一点,我的应用程序位于应用程序防火墙 (F5) 之后,当停用时,所有下载都可以在 IE8 上运行,问题是我没有看到响应中有任何变化。
谢谢