0

我的情况如下:

我正在从服务器读取并返回一个 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

4

1 回答 1

0

我希望这会帮助你,改变你的控制器返回FileResult

public FileResult DownloadPDF()
{
    buffer = <bytes from your PDF file>;
    return File(buffer, "application/pdf", "download.pdf");
}

显示 PDF

public FileResult ShowPDF()
{
    buffer = <bytes from your PDF file>;
    return File(buffer, "application/pdf");
}
于 2012-10-27T02:22:00.413 回答