Asp.net IE 10-文件下载问题
我正在尝试下载一个excel文件(使用C#\ASP.NET动态生成),当我单击“打开”时,会出现IE10视图下载对话框,上面显示“abc.xls无法下载”错误,但单击“重试”后,它会在第二次尝试时正确打开.xls文件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中重新开启了它,只是希望一切顺利 我敢
当我在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
Response.End()
之前,我必须先调用HttpApplication.CompleteRequest()
。否则,来自ASPX页面的HTML标记仍然会附加到我下载的文件中。