Intermittent Crystal Reports Fehler „Die Anfrage konnte nicht für die Hintergrundverarbeitung eingereicht werden.“

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

Frage

Wir sind mit Crystal Reports auf einem Windows Server 2008 mit .NET Framework 3.5 SP1.

Ich habe viele Ursachen für die allgemeinen Fehler „Die Anfrage konnte nicht für die Hintergrundverarbeitung eingereicht.“ Gesehen in anderen Foren, aber sie neigen dazu aufgrund eines spezifischen mit einem bestimmten Bericht Formatierung Problem nur einen einzigen Bericht zu beeinflussen persistent und wiederholbar zu sein.
Wir sehen diesen Fehler mit dem folgenden Stack-Trace, mit Unterbrechungen.

  • Es betrifft mehrere verschiedene Berichte, die wir haben.
  • Es betrifft einen bestimmten Bericht häufiger als andere Berichte.
  • Sobald ein Bericht betroffen ist der gleiche Fehler oft in mehreren Berichten in etwa zur gleichen Zeit wie angezeigt. für die nächsten 10 Minuten.
  • Der gleiche Bericht Lauf mit den gleichen Parametern arbeiten kann, wenn erneut ausführen (kurz nach) oder der Anwendung möglicherweise neu starten muß, bevor der Bericht erfolgreich neu ausgeführt werden kann.

Diese Berichte alle arbeitete zuvor ohne Probleme. Keine Änderung des Servers oder Code scheint offensichtlich, welche diesen Fehler gefällt habe. Der gesamte Code hinter hierfür ist VB.NET

Wir haben Schwierigkeiten haben es in Testumgebungen und ein Upgrade auf die neueste Version von Crystal Reproduktion hat nicht geholfen. Jede Hilfe oder Anregungen, die Sie vielleicht in der Lage sein, um dieses Problem zu beheben würde geschätzt.


"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"
War es hilfreich?

Lösung 3

Isolieren der Erstellung von Berichten Code.

Unsere endgültige Lösung war es, den Code zu übernehmen, die den Bericht zu erzeugen und sie in ihren eigenen isolierten Dienst zu bewegen. Unser ursprünglicher Service ruft dann unseren neuen Kristall-Service mit den entsprechenden Parametern und Crystal RPT-Datei. Dies ist offensichtlich eine teuere Lösung, da es beinhaltet alle Reportgenerierung Code zu ändern, anstatt den Kristall-Service zu anrufen. Der Crystal Service zeigt nicht den Fehler. Der Code war nicht außer dass geändert, so dass wir nur die Ursache des Fehlers davon ausgehen können, war eine Interaktion des Crystal Reports-Engine und die Umwelt in unserer Anwendung.

Andere Tipps

Nach vielen Tagen, schließlich entdeckte ich, was die Wurzel des Problems ist, falls Sie mit JPG-Bilder in Ihrem Bericht .

Die Sache ist, dass CR für VS2008 oder spätere Versionen nicht JPG-Dateien im CMYK-Modus verarbeitet . CR kann nur JPG-Dateien im RGB-Modus verarbeiten.

Es ist schon komisch, dass niedrigere Versionen von CR (die, die mit VS2003 kam) jede Art von jpg-Dateien verarbeiten können. Danke, Kristall.

Für mich war das Problem mit dem Temporary Crystal Report, der in den TEMP-Ordnern in Windows erzeugt wird. Es gibt eine Grenze für die Anzahl der temporären Crystal Reports, die von Crystal Report Engine erzeugt werden kann, während es in einer Schleife verarbeitet. Entweder ist der Raum in Temp-Ordner läuft in C-Laufwerk aufgrund des geringen Speichers oder die Grenze der Berichte erreicht, nach dem in einem einzigen Durchlauf Crystal Report nicht weiter exportieren. Es wird den betreffenden Fehler erwähnt geben.

Für mich ist dieses Thema auf alle 500 Berichte wurden wiederkehrende, die verarbeitet wurden (ich war Erzeugung die Berichte sagen, für ein Jahr und exportieren sie in einem Systemordner eins nach dem anderen meine Anwendung)

Die Lösung ist einfach. Immer in Ihrer Nähe und entsorgen die temporären RPT Crystal Report-Datei nach dem Export .



    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


Gibt es eine Chance, das Berichtsobjekt in dem Speicher des Servers ist durchgesickert? Ich lief in einen ähnlichen Fall, in dem der Bericht Objekt wurde in ein Session-Objekt gespeichert werden, so der Bericht nicht als Benutzer navigiert zwischen den Seiten neu geladen werden brauchte. Wenn jedoch der Benutzer mit dem Bericht fertig war, blieb das Objekt in der Session, und wurde nicht richtig gereinigt, wenn die Session vom Server zerstört wurde. Ich hatte ein Stück Code in dem Session_End Ereignisse in global.asax hinzufügen, um den Bericht Objekt zu finden und die dispose-Methode auf das nennen.

Die Tatsache, dass dies scheint zeitweise aber dann wirkt sich auf alle Berichte für eine Sache von 10 Minuten macht mich denke, es sitzungsbezogenen sein könnte. In meiner Situation erreichte der Server eine Begrenzung der Anzahl von Berichten, die auf dem Server (im Speicher) erstellt werden konnten, weil sie nicht freigegeben wurden. Die Symptome waren ähnlich wie bei Ihnen.

Hope, das hilft!

Versuchen Sie folgendes: Wenn Sie Leerzeichen im Crystal-Bericht links (Header, Footer oder irgendwelche Abschnitten) es unterdrücken. das ist alles. Ich hatte dieses Problem und ich fixiert auf diese Weise.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top