我正在尝试确定这是 IIS 问题还是代码问题。我倾向于前者,但在这种情况下,我不知道如何解决它。
我有几个 Asp.Net Web 应用程序将 PDF 创建为 MemoryStream(使用 iTextSharp),然后使用 MemoryStream.ToArray 方法在屏幕上显示 PDF。下面是我使用的基本代码。
Try
Dim m As System.IO.MemoryStream = pdfhelper.createFileMethod(filename)
Dim data As Byte() = m.ToArray
Response.Clear()
Response.Buffer = True
Response.AddHeader("Content-Length", data.Length.ToString())
Response.AddHeader("Content-Disposition", "inline; filename=sample")
Response.AddHeader("Expires", "0")
Response.AddHeader("Pragma", "cache")
Response.AddHeader("Cache-Control", "private")
Response.ContentType = "application/pdf"
Response.AddHeader("Accept-Ranges", "bytes")
Response.BinaryWrite(data)
Response.Flush()
Response.End()
Catch ex As Exception
throw ex
End Try
我从 Windows Server 2008 R2 标准版、64 位、版本 6.1 Build 7601 Service Pack 1 和 IIS 7.5.7600.16385 提供服务。
当我在 Internet Explorer 中使用该应用程序时,我可以毫无问题地打开 PDF 文档。当我使用 Chrome 或 Firefox 时,PDF 只是在加载时挂起。它根本不会加载。我没有收到错误消息。无论我在服务器上还是在客户端上运行,问题都是一样的。
但是,当我使用 Visual Studio 中内置的 IIS 在我的开发机器上运行时,无论使用哪种浏览器,我都没有问题。
我知道此修补程序中解决的问题。 因此,我假设问题出在 IIS 中。但是,我无法应用此修补程序,因为它仅对我的 Windows 版本的 Build 7600 有效。
所以我又想知道 - 这是 IIS 吗?这是我的代码吗,只是 IE 更能容忍我犯的错误?我该如何解决?
感谢您提供的任何想法。
编辑:我发现了这个建议,它强制下载 PDF 而不是在浏览器中打开。绝对不是这个问题的理想解决方案。希望有人有另一个想法。