7

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

「バックグラウンド処理のためにリクエストを送信できませんでした」という一般的なエラーの多くの原因を見てきました。ただし、特定のレポートの特定のフォーマットの問題により、単一のレポートにのみ影響を与える永続的で繰り返し可能な傾向があります。
以下のスタック トレースで断続的にこのエラーが発生しています。

  • これは、私たちが持っている複数の異なるレポートに影響します。
  • 他のレポートよりも頻繁に特定のレポートに影響を与えます。
  • レポートが影響を受けると、ほぼ同時に複数のレポートに同じエラーが表示されることがよくあります。次の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"
4

6 に答える 6

1

レポート生成コードを分離します。

私たちの最終的な解決策は、レポートを生成していたコードを独自の分離されたサービスに移動することでした。次に、元のサービスが、関連するパラメータと Crystal RPT ファイルを使用して、新しい Crystal サービスを呼び出します。これは、Crystal サービスを呼び出すようにすべてのレポート生成コードを変更する必要があるため、明らかに費用のかかるソリューションです。Crystal サービスではエラーは発生しません。それ以外のコードは変更されていないため、エラーの原因は、Crystal レポート エンジンとアプリケーション内の環境との何らかの相互作用であると推測できます。

于 2011-11-30T15:26:56.610 に答える
0

レポートオブジェクトがサーバーのメモリにリークされる可能性はありますか?レポートオブジェクトがSessionオブジェクトに格納されているという同様のケースに遭遇したため、ユーザーがページ間を移動するときにレポートを再ロードする必要はありませんでした。ただし、ユーザーがレポートを終了すると、オブジェクトはセッションに残り、セッションがサーバーによって破棄されたときに適切にクリーンアップされませんでした。レポートオブジェクトを見つけてdisposeメソッドを呼び出すには、global.asaxのSession_Endイベントに少しコードを追加する必要がありました。

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

お役に立てれば!

于 2010-02-02T01:14:24.553 に答える
0

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

于 2011-03-07T11:37:32.530 に答える