errore intermittente Crystal Reports “La richiesta non può essere presentata per l'elaborazione in background.”

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

Domanda

Ci sono in esecuzione Crystal Reports su un Windows Server 2008 con .NET framework 3.5 SP1.

ho visto molte cause di errore generale "La richiesta non può essere presentata per l'elaborazione in background." su altri forum, tuttavia tendono ad essere persistente e ripetibile che interessano un solo rapporto a causa di una specifica formattazione problema con un'apposita relazione.
Stiamo vedendo questo errore con l'analisi dello stack di seguito, in modo intermittente.

  • Colpisce più report diversi che abbiamo.
  • Colpisce un rapporto particolare più frequentemente di altri rapporti.
  • Una volta che un rapporto è influenzato lo stesso errore spesso apparire in più report approssimativamente nello stesso tempo ad esempio. per i prossimi 10 minuti.
  • La stessa corsa rapporto con gli stessi parametri può funzionare quando eseguire di nuovo (subito dopo), o l'applicazione potrebbe essere necessario riavviare prima che il rapporto può essere con successo ri corsa.

Questi rapporti tutti lavorato precedentemente senza alcun problema. Nessun cambiamento in server o codice sembra evidente che si sarebbe precipitato questo errore. Tutto il codice dietro per questo è VB.NET

Abbiamo avuto difficoltà a riprodurre in ambienti di test e l'aggiornamento alla versione più recente di Crystal non ha aiutato affatto. Qualsiasi aiuto o suggerimenti che si potrebbe essere in grado di fare per risolvere questo problema sarebbe apprezzato.


"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"
È stato utile?

Soluzione 3

isolare il codice di generazione di report.

La nostra risoluzione finale è stato quello di prendere il codice che è stato generando il rapporto e spostarlo in un proprio servizio isolato. Il nostro servizio originale quindi chiama il nostro nuovo servizio di cristallo con i relativi parametri e file di cristallo RPT. Questa è ovviamente una soluzione costosa in quanto comporta la modifica tutto il codice di generazione di report per chiamare il servizio cristallo invece. Il servizio di cristallo non presenta l'errore. Il codice non era cambiato oltre a questo, in modo che possiamo solo presumere la causa dell'errore è stata una certa interazione del report Crystal motore e l'ambiente all'interno della nostra applicazione.

Altri suggerimenti

Dopo molti giorni, ho finalmente scoperto che cosa è la radice del problema, nel caso in cui si è compreso immagini jpg nel rapporto .

Il fatto è che per CR VS2008 o versioni successive, non in grado di gestire i file jpg in modalità CMYK . CR solo in grado di gestire i file jpg in modalità RGB.

E 'divertente che le versioni inferiori della CR (quello che è venuto con VS2003) in grado di gestire ogni tipo di file jpg. Grazie, di cristallo.

Per me il problema è stato con il Crystal Report temporaneo che viene generato nella cartella TEMP di Windows. C'è un limite al numero di temporanei Crystal Reports che può essere generata dal motore di report Crystal durante l'elaborazione in un ciclo. Sia lo spazio in cartella Temp si esaurisce causa di memoria insufficiente nel disco C o il limite di rapporti si raggiunge dopo che in un rapporto di cristallo singolo run non può esportare ulteriormente. Darà l'errore descritto nella domanda.

Per me la questione è stata ripresentando in ogni 500 segnalazioni che sono state elaborate (stavo generando i rapporti dicono, per un anno e della loro esportazione a un sistema di cartelle una ad una con la mia applicazione)

La soluzione è semplice. Sempre vicino e smaltire il file Crystal Report Rpt temporanea dopo esportandolo .



    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


C'è una possibilità l'oggetto report è trapelato nella memoria del server? Mi sono imbattuto in un caso simile in cui l'oggetto report veniva conservato in un oggetto di sessione, in modo che il rapporto non ha bisogno di ottenere ricaricato come l'utente navigato tra le pagine. Tuttavia, quando l'utente è stato fatto con la relazione, l'oggetto è rimasto in sessione, e non è stato pulito correttamente quando la sessione è stata distrutta dal server. Ho dovuto aggiungere un po 'di codice nell'evento Session_End in Global.asax per trovare l'oggetto report e chiamare il metodo Dispose su di esso.

Il fatto che questo appare a intermittenza, ma poi colpisce tutti i report per una questione di 10 minuti mi fa pensare che potrebbe essere sessione legate. Nella mia situazione il server ha raggiunto un limite al numero di rapporti che potrebbero essere creati sul server (in memoria) perché non erano stati rilasciati. I sintomi erano simili ai tuoi.

Spero che questo aiuti!

Prova questo: Se avete lasciato uno spazio vuoto al rapporto di cristallo (intestazione, piè di pagina o tutte le sezioni) sopprimerla. È tutto. Ho avuto questo problema e ho risolto in questo modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top