質問者
VisualStudio2008付属のCrystalReportsでレポートのロード時にエラー

質問
-
開発環境 WindowXp Professional SP2
VisualStudo2008 Professionalサーバー WIndows Server 2003 Standard Edition SP1 IIS6.0
WEBアプリケーションで付属のCrystalReportsを使って、レポートのPDF出力を行っています。
今までは順調に動いていたのですが、最近数時間連続で運用していると、「レポートが開けませんでした。」というエラーが発生するようになってしまいました。
いろいろ調べたのですが原因がわからず、いったんエラーが発生するようになると、とサーバーを再起動するか、
World Wide Web Publishing Service を再起動するしか解消方法がわからないのが現状です。
タイミングとしてはVisualStudio2005で作成したWEBアプリなのですが、2週間ほど前にVIsualStudio2008に変換した頃から発生するようになったように思います。どなたか解決の手がかりご存知であればご教授願えませんでしょうか。
以下がイベントビューアのエラー内容です
イベント コード: 3005
イベント メッセージ: ハンドルされていない例外が発生しました。
イベント時間: 2008/06/04 8:48:26
イベント時間 (UTC): 2008/06/03 23:48:26
イベント ID: 9cd108da79a1430f985d95934832fb99
イベント シーケンス: 372
イベント発生: 23
イベント詳細コード: 0
アプリケーション情報:
アプリケーション ドメイン: /LM/W3SVC/1/Root/webapli-1-128570073509301841
信頼レベル: Full
アプリケーションの仮想パス: /webapli
アプリケーション パス: C:\Inetpub\wwwroot\webapli\
コンピュータ名: Server01
プロセス情報:
プロセス ID: 3544
プロセス名: w3wp.exe
アカウント名: NT AUTHORITY\NETWORK SERVICE
例外情報:
例外の種類: Exception
例外メッセージ: レポートのロードに失敗しました。
要求情報:
要求 URL: http://192.168.1.1/webapli/hoge.aspx
要求パス: /webapli/hoge.aspx
ユーザーのホスト アドレス: 192.168.0.101
ユーザー: hogehoge\hoge
認証済み: True
認証の種類: Negotiate
スレッド アカウント名: NT AUTHORITY\NETWORK SERVICE
スレッド情報:
スレッド ID: 12
スレッド アカウント名: NT AUTHORITY\NETWORK SERVICE
偽装: False
スタック トレース: 場所 CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
場所 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
場所 hoge.Page_Load(Object sender, EventArgs e) 場所 C:\Inetpub\wwwroot\webapli\hoge.aspx.vb:行 27
場所 System.Web.UI.Control.OnLoad(EventArgs e)
場所 System.Web.UI.Control.LoadRecursive()
場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
以下がエラー発生部分のソースです
Code SnippetCode SnippetCode SnippetDim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New DiskFileDestinationOptions
Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions
Dim Rp As New ReportDocument
Rp.Load(MapPath("KOK1.rpt")) '← ここでエラーが発生
'~~~~~~~ 略 ~~~~~~~~~~~~~Try
'出力実行Rp.Export()
Rp.Dispose()
Rp.Close()
'出力されたpdfファイルを読み込む
PDFURL = PDF_DIR & "\" & strPdfFile
Response.Redirect(PDFURL)
Catch ENex As EngineException
Me.Label1.Text = ENex.ErrorID & "----" & vbCrLf & ENex.Source & "----" & vbCrLf & ENex.Message
Catch ex As Exception
Me.Label2.Text = ex.Source & vbCrLf & ex.Message
Finally
Rp.Dispose()
Rp.Close()
End Try
すべての返信
-
るーしぇ さんからの引用 Code SnippetCode SnippetCode SnippetDim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New DiskFileDestinationOptions
Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions
Dim Rp As New ReportDocument
Rp.Load(MapPath("KOK1.rpt")) '← ここでエラーが発生
'~~~~~~~ 略 ~~~~~~~~~~~~~Try
'出力実行Rp.Export()
Rp.Dispose()
Rp.Close()
'出力されたpdfファイルを読み込む
PDFURL = PDF_DIR & "\" & strPdfFile
Response.Redirect(PDFURL)
Catch ENex As EngineException
Me.Label1.Text = ENex.ErrorID & "----" & vbCrLf & ENex.Source & "----" & vbCrLf & ENex.Message
Catch ex As Exception
Me.Label2.Text = ex.Source & vbCrLf & ex.Message
Finally
Rp.Dispose()
Rp.Close()
End Tryfor VS2005 では CrystalReports XI R2 に更新すれば解消したりもしたのですが、VS2008 の内部バージョンは大丈夫かな。
もし Hotfix が出ているようであれば、それを当ててみてください。ところで、Dispose メソッドと Close メソッドの順序が逆ですね。
また、Finally にも書かれているので、正常系の場合は Dispose メソッドと Close メソッドがそれぞれ 2 回ずつ発生します。もしかすると Close メソッドが正しく呼ばれず居座っている可能性もあります。