我的情况如下:
我正在阅读并从服务器返回一个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
答案 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");
}