在ASP.NET中发送压缩响应
我在IIS6上运行一个网站,用于ASP.NET应用程序并启用了压缩,这对于.aspx网页来说效果很好 不起作用的是作为回发响应的一部分传输的下载二进制文件:例如,链接按钮是“下载到excel”-用户单击,代码生成二进制文件,执行response.Clear()操作,然后将文件写入response.OutputStream 浏览器可以看到响应,但它始终为零字节。因此,我假设web浏览器需要一个压缩响应,并且由于原始二进制文件不是有效的压缩流,所以它会失败。如果我已经清除了响应,为什么会出现这种情况,我感到困惑——当然响应头(指定压缩)也被清除了 因此产生了两个问题: 1) 如何压缩二进制文件以发送压缩响应? 2) 如何在运行时检查IIS压缩是否已启用在ASP.NET中发送压缩响应,asp.net,iis,compression,Asp.net,Iis,Compression,我在IIS6上运行一个网站,用于ASP.NET应用程序并启用了压缩,这对于.aspx网页来说效果很好 不起作用的是作为回发响应的一部分传输的下载二进制文件:例如,链接按钮是“下载到excel”-用户单击,代码生成二进制文件,执行response.Clear()操作,然后将文件写入response.OutputStream 浏览器可以看到响应,但它始终为零字节。因此,我假设web浏览器需要一个压缩响应,并且由于原始二进制文件不是有效的压缩流,所以它会失败。如果我已经清除了响应,为什么会出现这种情况
干杯我会禁用压缩并检查它是否仍然有效,只是为了确定这确实是由于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();