我正在IIS6上运行一个用于ASP.NET应用程序并启用压缩的网站,该网站适用于.aspx网页。
什么不起作用的是下载的二进制文件,它们作为回发响应的一部分传输:例如链接按钮是'download to excel' - 用户点击并且代码生成二进制文件,执行Response.Clear()然后将文件写入Response.OutputStream。
浏览器会看到响应,但它始终为零字节。因此我假设Web浏览器期望压缩响应,并且由于原始二进制文件不是有效的压缩流,因此它失败。我很困惑,如果我已经清除了响应,为什么会这样 - 当然响应头(指定压缩)也被清除了?
因此出现了两个问题:
1)如何压缩二进制文件以发送压缩响应? 2)如何在运行时检查IIS压缩是否已启用?
干杯
答案 0 :(得分:3)
我会禁用压缩并检查这是否仍然有效,只是为了确定这确实是由于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();