Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET中发送压缩响应_Asp.net_Iis_Compression - Fatal编程技术网

在ASP.NET中发送压缩响应

在ASP.NET中发送压缩响应,asp.net,iis,compression,Asp.net,Iis,Compression,我在IIS6上运行一个网站,用于ASP.NET应用程序并启用了压缩,这对于.aspx网页来说效果很好 不起作用的是作为回发响应的一部分传输的下载二进制文件:例如,链接按钮是“下载到excel”-用户单击,代码生成二进制文件,执行response.Clear()操作,然后将文件写入response.OutputStream 浏览器可以看到响应,但它始终为零字节。因此,我假设web浏览器需要一个压缩响应,并且由于原始二进制文件不是有效的压缩流,所以它会失败。如果我已经清除了响应,为什么会出现这种情况

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

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

浏览器可以看到响应,但它始终为零字节。因此,我假设web浏览器需要一个压缩响应,并且由于原始二进制文件不是有效的压缩流,所以它会失败。如果我已经清除了响应,为什么会出现这种情况,我感到困惑——当然响应头(指定压缩)也被清除了

因此产生了两个问题:

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


干杯

我会禁用压缩并检查它是否仍然有效,只是为了确定这确实是由于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();