クリスタルレポートは初めてです。私はかなり長い間この問題を抱えていて、解決できないようです。私がやっていることは、レポートを実行し、生成された PDF を応答で送り返すことです。
問題は、ブラウザーから asp.net ページ (レポートを実行するページ) を実行すると、1 回目または 2 回目は正常に動作しますが、その後はブラウザーが待機し続け、サーバーからの応答が得られないことです。サーバー、エラーさえありません!ロードが長時間続くだけです。サーバーをクリーンに再インストールしましたが、それでも同じ問題が発生します。このページの最初のテストでは、この問題は発生しませんでした。
Crystal レポートは予測不能です。レポートが適切に閉じられていないのか、接続が適切でないためなのかはわかりません。
Windows Server 2003 - IIS ここに vb.net ページがあります -
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim connectionInfo As New ConnectionInfo
connectionInfo.ServerName = "UID=abc;PWD=abc;Driver= {SQL Server};Server=" & Page.Request.QueryString("server") & ";Database=" & Page.Request.QueryString("database")
Using report As New ReportDocument
report.Load(Server.MapPath("/report/Crystal/test.rpt"))
report.FileName = Server.MapPath("/report/Crystal/test.rpt")
SetDBLogonForReport(connectionInfo, report)
report.SetParameterValue("param1", Page.Request.QueryString("param1"))
Dim oStream As New MemoryStream()
oStream = report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.BinaryWrite(oStream.ToArray())
report.Close()
End Using
Response.Flush()
Response.End()
End Sub
Private Sub SetDBLogonForReport(ByVal connectionInfo As ConnectionInfo, ByVal reportDocument As ReportDocument)
Dim tables As Tables
tables = reportDocument.Database.Tables
For Each table As CrystalDecisions.CrystalReports.Engine.Table In tables
Dim tableLogonInfo As New TableLogOnInfo
tableLogonInfo = table.LogOnInfo
tableLogonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(tableLogonInfo)
Next
End Sub
</div>
</form>