【问题标题】:Sending compressed response in ASP.NET在 ASP.NET 中发送压缩响应
【发布时间】:2023-04-09 11:13:01
【问题描述】:

我在 IIS6 上为 ASP.NET 应用程序运行一个网站,并启用了压缩,这对于 .aspx 网页效果很好。

不工作的是下载的二进制文件,这些文件作为回发响应的一部分传输:例如链接按钮是“下载到 excel” - 用户单击,代码生成一个二进制文件,执行 Response.Clear(),然后将文件写入 Response.OutputStream。

浏览器可以看到响应,但它始终是零字节。因此,我假设 Web 浏览器期待压缩响应,并且由于原始二进制文件不是有效的压缩流,它会失败。我很困惑,如果我清除了响应,为什么会出现这种情况 - 响应标头(指定压缩)肯定也被清除了吗?

所以出现了两个问题:

1) 如何压缩二进制文件以发送压缩响应? 2) 如何在运行时检查是否启用了 IIS 压缩?

干杯

【问题讨论】:

    标签: asp.net iis compression


    【解决方案1】:

    我会禁用压缩并检查这是否仍然有效,只是为了确定这确实是由于 IIS 压缩造成的。我告诉你,因为我正在运行一个支持 IIS/压缩的站点,它可以毫无问题地提供 PDF 文件(二进制)。

    无论如何,这是对我有用的代码部分。

     Response.Clear();
     Response.ClearHeaders();
    
     Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
     Response.AddHeader("Content-Length", fileInfo.Length.ToString());
     Response.AddHeader("Content-transfer-encoding", "8bit");
     Response.AddHeader("Cache-Control", "private");
     Response.AddHeader("Pragma", "cache");
     Response.AddHeader("Expires", "0");  
    
     Response.ContentType = "application/pdf";
     Response.WriteFile(filePath);
    
     Response.Flush();
     Response.Close();
     HttpContext.Current.ApplicationInstance.CompleteRequest();
    

    【讨论】:

      猜你喜欢
      • 2013-12-02
      • 1970-01-01
      • 2010-09-19
      • 2010-09-19
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 2010-12-13
      • 2011-04-26
      相关资源
      最近更新 更多