断続的な Crystal Reports エラー「バックグラウンド処理のためにリクエストを送信できませんでした。」

StackOverflow https://stackoverflow.com/questions/2181255

質問

.NET Framework 3.5 SP1 を搭載した Windows Server 2008 上で Crystal Reports を実行しています。

「バックグラウンド処理のためにリクエストを提出できなかった」という一般的なエラーの多くの原因を見てきました。しかし、他のフォーラムでは、特定のレポートで特定の書式設定の問題により、1つのレポートにのみ影響を与える永続的で再現性がある傾向があります。
このエラーは、以下のスタック トレースで断続的に発生します。

  • これは、私たちが所有する複数の異なるレポートに影響を与えます。
  • 特定の 1 つのレポートが他のレポートよりも頻繁に影響を受けます。
  • レポートが影響を受けると、同じエラーがほぼ同時に複数のレポートに表示されることがよくあります。次の10分間。
  • 同じパラメータを使用して実行された同じレポートは、(直後に) 再度実行すると機能する場合があります。または、レポートを正常に再実行する前にアプリケーションの再起動が必要になる場合があります。

これらのレポートはすべて、以前は問題なく機能していました。このエラーを引き起こす原因となったサーバーまたはコードの変更は明らかではありません。このためのすべてのコードビハインドは VB.NET です

テスト環境でそれを再現するのは困難で、Crystal の最新バージョンにアップグレードしてもまったく役に立ちませんでした。この問題を解決するためにご協力やご提案をいただければ幸いです。


"The request could not be submitted for background processing."  
  at CrystalDecisions.ReportAppServer.Controllers.DatabaseControllerClass.ReplaceConnection(Object oldConnection, Object newConnection, Object parameterFields, Object crDBOptionUseDefault)  
  at CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(Object val, Type type)  
  at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)  
--- End of inner exception stack trace ---  
  at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)  
  at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)  
  at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet)  
  at "USER CODE"
役に立ちましたか?

解決 3

アイソレポート生成コードます。

私たちの最終的な解決には、レポートを生成したコードを取得し、独自の孤立サービスに移動することでした。当社独自のサービスは、関連するパラメータとクリスタルRPTファイルを使用して私たちの新しいクリスタルのサービスを呼び出します。それは代わりにクリスタルサービスを呼び出すために、すべてのレポート生成コードを変更する必要として、これは明らかに高価なソリューションです。クリスタル・サービスはエラーを示しません。我々は唯一のエラーの原因を推測できるように、コードは、そのほかに変わっていないクリスタルのいくつかの相互作用は、当社のアプリケーション内でエンジンと環境を報告しました。

他のヒント

は多くの日の後、最終的に私は場合には、レポートの中の JPG画像を含むされ、問題の根本であるものを発見します。

の事はをVS2008またはそれ以降のバージョンのCRは、をCMYKモードでJPGファイルを扱うことができないということです。 CRはRGBモードでJPGファイルを扱うことができます。

それはCR(VS2003付属の1)の下位バージョンはJPGファイルの任意の種類を扱うことができると面白いです。おかげで、クリスタルます。

私にとっての問題は、WindowsのTempフォルダに生成されます一時Crystalレポートしていました。ループ内での処理中にCrystalレポートエンジンによって生成することができる一時のCrystal Reportsの数には制限があります。どちらのTempフォルダ内のスペースは、低Cドライブ内のメモリや1回の実行クリスタルレポートでさらにエクスポートすることができない後に到達されたレポートの限界までなくなります。それは質問で述べたエラーが発生します。

私にとってこの問題は(私は年のために、と言うレポートを生成し、自分のアプリケーションを使用して一つ一つのフォルダのシステムにエクスポートされた)処理されたすべての500件の報告で繰り返した。

解決策は単純です。 を常に近いとは、それをエクスポートした後、一時.RPT Crystalレポートファイルを配置ます。



    for i as integer=0 to reportcount -1
        Dim rpt as New MyCrystalReport
        Dim filename as String = "MyReport" & i & ".Pdf"
        //Query the DB obtain the dataset then set the datasource to the report
        ...
        //Export the report
       rpt.ExportToDiskCrystalDecisions.Shared.ExportFormatType.PortableDocFormat,fileName)
        rpt.Close()
        rpt.Dispose()
    next


レポートオブジェクトは、サーバのメモリ内に漏洩した可能性はありますか?レポートはページ間をナビゲートするユーザーとして再読み込みを取得する必要はありませんでしたので、私は、レポートオブジェクトは、Sessionオブジェクトに格納されていた似たようなケースに遭遇しました。ユーザーがレポートで行われたときしかし、オブジェクトがセッションに残って、セッションがサーバーによって破壊された時に適切にクリーンアップされていませんでした。私は、レポートオブジェクトを見つけ、それにDisposeメソッドを呼び出すためのGlobal.asaxでのSession_Endイベントにコードのビットを追加する必要がありました。

これが断続的に表示されますが、その後10数分のためのすべてのレポートに影響を与えているという事実は、私はそれがセッションに関連することができると思います。私の状況では、サーバは、彼らがリリースされていなかったので、(メモリ内の)サーバー上に作成することができたレポートの数の上限に達しました。症状はあなたに類似していた。

希望このことができます!

これを試してください:あなたがクリスタルレポート(ヘッダー、フッター、または任意のセクション)で任意の空白を残した場合、それを抑えます。それで全部です。私はこの問題を持っていたし、私はこの方法を修正します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top