从服务器返回PDF

时间:2012-10-27 02:06:34

标签: asp.net-mvc-3 pdf

我的情况如下:

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

App - ASP.Net 4.0.30319.0,C#,Ajax

1 个答案:

答案 0 :(得分: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");
}