Asp.net IE 10-文件下载问题

Asp.net IE 10-文件下载问题,asp.net,internet-explorer-10,Asp.net,Internet Explorer 10,我正在尝试下载一个excel文件(使用C#\ASP.NET动态生成),当我单击“打开”时,会出现IE10视图下载对话框,上面显示“abc.xls无法下载”错误,但单击“重试”后,它会在第二次尝试时正确打开.xls文件 当我在Firefox或Chrome中进行测试时,它工作正常。我认为这可能解释了奇怪的行为: IE9测试版似乎在下载文件时引入了内容长度和传输编码验证,但发现问题太大,因为许多服务器没有为这些通过代码处理的下载发送正确的值。显然,他们在IE10中重新开启了它,只是希望一切顺利 我敢

我正在尝试下载一个excel文件(使用C#\ASP.NET动态生成),当我单击“打开”时,会出现IE10视图下载对话框,上面显示“abc.xls无法下载”错误,但单击“重试”后,它会在第二次尝试时正确打开.xls文件


当我在Firefox或Chrome中进行测试时,它工作正常。

我认为这可能解释了奇怪的行为:

IE9测试版似乎在下载文件时引入了
内容长度
传输编码
验证,但发现问题太大,因为许多服务器没有为这些通过代码处理的下载发送正确的值。显然,他们在IE10中重新开启了它,只是希望一切顺利

我敢打赌,下载开始时发送的准确值应该可以解决这个问题。当然,从一开始就不应该是个问题。。。艾依依

[编辑]

发现这个问题(至少对我来说)与在代码中使用
Response.Close()
和/或
Response.End()
有关解释了为什么不应该使用这两种方法,以及为什么选择了
HttpApplication.CompleteRequest
。将
Response.End()
Response.Close()
实例更改为
HttpApplication.CompleteRequest
解决了IE10下载问题。就像魔术一样。显然,MSDN现在不鼓励使用这两种方法(尽管多年来MSDN代码示例都包含了这两种方法),现在提倡使用
HttpApplication.CompleteRequest

我们一直在和欧亚大陆作战


[/Edit]

我也有类似的行为- 在与这个问题斗争了大约12个小时后,什么对我有效:

从更改响应标头

内容类型:application/application/vnd.ms-excel

内容类型:应用程序/八位字节流

注意,我还有另一个未提及的症状:我正在进行治疗

内容处置:附件;filename=“Inventory_10-10-2013.xls”

尽管有这样的设置,IE还是使用了URL中的文件名(所以它说“getInventory无法下载”-并将错误命名的文件保存在下载文件夹中!)

当我更改“内容类型”时,IE开始从标题中接受文件名

这里的记录是我正在设置的所有响应头:

  • HTTP/1.1200ok
  • 布拉格语:公共
  • 过期时间:2013年10月11日星期五16:33:38 GMT
  • 缓存控制:最大年龄=1
  • 内容处置:附件;filename=“Inventory_10-10-2013.xls”
  • 内容传输编码:二进制
  • 设置Cookie:fileDownload=true;路径=/
  • 内容类型:应用程序/八位字节流;字符集=UTF-8
  • 内容长度:7680
  • 日期:2013年10月10日星期四格林尼治标准时间16:33:38

您能分享您的代码吗?这将有助于确定您的问题。我只想补充一件需要注意的重要事情。我在用IE10下载动态生成的文件(CSV、XLS)时遇到了同样的问题。在调用
Response.End()
之前,我必须先调用
HttpApplication.CompleteRequest()
。否则,来自ASPX页面的HTML标记仍然会附加到我下载的文件中。