【问题标题】:Response.BinaryWrite not working with IE6Response.BinaryWrite 不适用于 IE6
【发布时间】:2011-06-23 00:07:31
【问题描述】:

我在一些 ASP.NET 中使用以下 C# 代码将文件发送到浏览器:

Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=" + myFileName);
Response.BinaryWrite(myContent);
Response.End();
Response.Close();

它适用于WebDev.WebServer 和 IIS7,在 IE7-8、FF3-4 和 Chrome 下。但不是在IE6下。我不明白为什么它可能是与浏览器相关的问题...

【问题讨论】:

  • 对于这个浏览器,您可能还需要添加content-length 标头。
  • 究竟是什么在 IE6 中“运行良好”?你没拿到文件,是不是名字错了,..
  • 这是内容处置。在某些情况下,IE6 是区分大小写的。
  • 与 Content-disposition 相同 :( IE6 有什么问题:我没有得到文件。

标签: asp.net response.write


【解决方案1】:

尝试添加content-length 标头:

Response.AddHeader("content-length", myContent.Length.ToString());

编辑:可能需要的另一个是content-type

Response.AddHeader("content-type", "type here");

【讨论】:

  • 请描述一下IE6到底发生了什么。
  • Nothing...页面刷新,IE6不显示文件下载对话框。
  • @Francois 这很奇怪.. 你不能在不同的服务器上进行测试,允许你使用SendFileTransmitFile 方法存储文件吗?
【解决方案2】:

使用 TransmitFile 代替 BinaryWrite。见例子here

【讨论】:

  • 不能这样做(不能在服务器上存储文件)。
【解决方案3】:

谢谢大家,这里是答案:是由于页面中的Ajax,并且Ajax请求没有按预期禁用。

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多