错误显示pdf CrystalReport vb.net

我有下面的代码
它的功能是使用CrystalReports从屏幕上的报表加载数据.
Dim strExportFile As String
            strExportFile = "ReportReajustesAplicados.pdf"

            Dim s As System.IO.MemoryStream = relat.ExportToStream(ExportFormatType.PortableDocFormat)
            With HttpContext.Current.Response

                .ClearContent()
                .ClearHeaders()
                .ContentType = "application/pdf"
                .AddHeader("Content-disposition","inline; filename=" & strExportFile)
                .BinaryWrite(s.ToArray)
                .End()
            End With

当我提取数据时.

我有以下错误

无法将类型为“FileStreamDeleteOnClose”的对象强制转换为“System.IO.MemoryStream”.

我尝试使用System.IO.Stream,提取工作,但不显示屏幕上的数据,因为“.BinaryWrite(s.ToArray)”不接受方法ToArray.

注意:我放的时候

#if DEBUG Then
             CrystalReportViewer1.ReportSource = relat
             CrystalReportViewer1.DataBind ()
             Exit Sub

If #End

作品

我需要这个工作,但在发布模式下.

帮我

我找到了解决方案:

https://archive.sap.com/discussions/thread/3322762

正如SAP回答的那样:
“这是设计,我们从未完全支持导出到MemoryStream.
唯一的选择是不使用MemoryStream,这不会改变.“

所以解决方案是用Stream替换MemoryStream并将其发送到Byte数组中,如下所示:

Dim strExportFile As String
strExportFile = "ReportReajustesAplicados.pdf"
Dim s As System.IO.Stream = relat.ExportToStream(ExportFormatType.PortableDocFormat)
Dim b(s.Length) As Byte
s.Read(b,CInt(s.Length))

With HttpContext.Current.Response
    .ClearContent()
    .ClearHeaders()
    .ContentType = "application/pdf"
    .AddHeader("Content-disposition","inline; filename=" & strExportFile)
    .BinaryWrite(b)
    .Flush()
    .SuppressContent = True
    HttpContext.Current.ApplicationInstance.CompleteRequest()
End With

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...