将文件写入用户,在IE中出现零星错误

时间:2009-11-17 16:11:00

标签: asp.net internet-explorer download

我有一个非常有趣的问题,只有特定的IE实现。我有一个ASPX页面,用于将文件写入用户,作为该过程的一部分,页面使用以下代码将文件写入用户。

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=download" + System.IO.Path.GetExtension(oInfo.SupportingFilePath));
Response.ContentType = "application/octet-stream";
Response.WriteFile(Server.MapPath(oInfo.SupportingFilePath));
Response.End();

在99.5%的情况下,这种情况很好,但是,在IE中仅在特定计算机上的某些罕见情况下,系统会提示用户下载.aspx页面,和/或给出错误消息。

任何人都知道这里发生了什么?

2 个答案:

答案 0 :(得分:1)

根据RFC2231,MIME标头的参数值必须包含在双引号中:http://www.ietf.org/rfc/rfc2231.txt(如果您感兴趣,请参阅第3页)。 它应该类似于“attachment; filename =”“download”+ System.IO.Path.GetExtension(oInfo.SupportingFilePath)+“”“”);

答案 1 :(得分:0)

虽然这不应该发生,因为你设置了ContentTypecontent-disposition,我相信IE的内置MIME嗅探/处理是造成这里问题的原因。以下是您可以尝试的几种解决方法/黑客攻击:

  • 将文件扩展名添加到传输文件的.aspx页面上的查询字符串,即http://blahblahblah/page.aspx?.ext
  • 如果您使用的是IE 8,则可以为指定here的“nosniff”指定另一个响应标头。

我仍然遇到问题,正如文件here所述,但我希望其中一个有帮助。