我的情况如下:
我正在从服务器读取并返回一个 PDF 文件,然后将其显示在iframe
. 以下代码适用于 IE。但是,当我通过 Chrome 访问该站点时,我得到了所有垃圾字符。
while ((byteCount = inStr.Read(buffer, 0, buffer.Length)) > 0)
{
if (HttpContext.Response.IsClientConnected)
{
HttpContext.Response.BufferOutput = true;
HttpContext.Response.ContentType = "application/pdf";
HttpContext.Response.OutputStream.Write(buffer, 0, buffer.Length);
//HttpContext.Response.Flush();
}
}
当我刷新响应时,我确实可以正确查看 PDF。问题是调用 flush 会导致"Server cannot set status after HTTP headers have been sent"
服务器上出现警告。
问题是:为什么 Chrome 需要刷新,是否有办法避免刷新?到目前为止,我已经阅读了所有帖子并且无法解决与刷新相关的服务器错误。
服务器 - IIS7、Windows Server 2008 R2
应用程序 - ASP.Net 4.0.30319.0、C#、Ajax