Intermittent erreur Crystal Reports « La demande n'a pas pu être soumise pour traitement en arrière-plan. »

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

Question

Nous courons Crystal Reports sur un ordinateur Windows Server 2008 avec .NET Framework 3.5 SP1.

Je l'ai vu de nombreuses causes de l'erreur générale « La demande n'a pas pu être soumise pour traitement en arrière-plan. » sur d'autres forums, mais ils ont tendance à être persistante et répétitive affectant un seul rapport en raison d'un problème de mise en forme spécifique avec un rapport spécifique.
Nous voyons cette erreur avec la trace de la pile ci-dessous, par intermittence.

  • Il affecte plusieurs rapports différents que nous avons.
  • Il affecte un rapport particulier plus fréquemment que d'autres rapports.
  • Une fois qu'un rapport est affecté de la même erreur apparaît souvent dans plusieurs rapports à peu près en même temps, par exemple. pour les 10 prochaines minutes.
  • Le même rapport exécuté avec les mêmes paramètres peut fonctionner quand exécuter à nouveau (peu après) ou l'application peut avoir besoin de redémarrer avant que le rapport peut être re avec succès exécuté.

Ces rapports ont tous travaillé auparavant sans problème. Aucun changement de serveur ou un code semble apparent qui aurait précipité cette erreur. Tout le code derrière pour cela est VB.NET

Nous avons eu du mal à le reproduire dans des environnements de test et de mise à niveau vers la dernière version de Crystal n'a pas aidé du tout. Toute aide ou suggestion que vous pourriez être en mesure de faire pour résoudre ce problème serait apprécié.


"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"
Était-ce utile?

La solution 3

Isoler le code de génération de rapport.

Notre résolution finale était de prendre le code qui générait le rapport et le déplacer dans son propre service isolé. Notre service d'origine appelle alors notre nouveau service de cristal avec le fichier des paramètres pertinents et Crystal RPT. Ceci est évidemment une solution coûteuse car elle implique de modifier l'ensemble du code de génération de rapports pour appeler le service de Crystal à la place. Le service de cristal ne présente pas l'erreur. Le code n'a pas changé d'ailleurs que, si nous ne pouvons présumer la cause de l'erreur était une interaction du moteur Crystal Reports et l'environnement dans notre application.

Autres conseils

Après plusieurs jours, enfin j'ai découvert ce qui est la racine du problème, si vous incluez images jpg dans votre rapport .

La chose est que CR pour les versions VS2008 ou version ultérieure, ne peut pas gérer les fichiers jpg en mode CMJN . CR ne peut gérer les fichiers jpg en mode RVB.

Il est drôle que les versions inférieures du CR (celui qui est venu avec VS2003) pourrait gérer tout type de fichiers jpg. Merci, Crystal.

Pour moi, la question était avec le Crystal Report temporaire qui est généré dans le dossier TEMP dans Windows. Il y a une limite au nombre de temporaires Crystal Reports qui peuvent être générés par Crystal moteur de rapport lors du traitement dans une boucle. Soit l'espace dans le dossier Temp court en raison de la faible mémoire dans le lecteur C ou à la limite des rapports est atteint après quoi dans un rapport de cristal seul passage ne peut pas exporter davantage. Il donnera l'erreur mentionnée en question.

Pour moi, cette question a été à tous les 500 récurrents rapports qui ont été traitées (je générer les rapports disent, pour un an et les exporter vers un dossier système un par un à l'aide de ma demande)

La solution est simple. Toujours proche et disposer le rpt temporaire cristal fichier rapport après l'exportation .



    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


Y at-il une chance l'objet du rapport est divulgué dans la mémoire du serveur? Je suis tombé sur un cas similaire où l'objet du rapport a été stocké dans un objet de session, de sorte que le rapport n'a pas besoin de se recharger lorsque l'utilisateur navigue entre les pages. Cependant, lorsque l'utilisateur a été fait avec le rapport, l'objet est resté dans la session, et n'a pas été nettoyée correctement lorsque la session a été détruit par le serveur. Je devais ajouter un peu de code dans l'événement Session_End dans global.asax pour trouver l'objet du rapport et appeler la méthode Éliminez sur elle.

Le fait que cela semble par intermittence, mais affecte alors tous les rapports pour une affaire de 10 minutes me fait penser qu'il pourrait être lié session. Dans ma situation le serveur a atteint une limite sur le nombre de rapports qui pourraient être créés sur le serveur (en mémoire) parce qu'ils ne sont pas libérés. Les symptômes étaient semblables à la vôtre.

Hope this helps!

Essayez ceci: Si vous avez laissé un espace vide au rapport de cristal (en-tête, pied de page ou les sections) supprimer. c'est tout. J'ai eu ce problème et je fixe ainsi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top