Intermitente de error de Crystal Reports “La solicitud no pudo ser presentado para su procesamiento en segundo plano.”

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

Pregunta

Nos estamos quedando Crystal Reports en un servidor Windows 2008 con .NET Framework 3.5 SP1.

he visto muchas causas del error general "La solicitud no pudo ser presentado para su procesamiento en segundo plano." en otros foros, sin embargo, tienden a ser persistentes y repetible que afecta a un solo informe debido a un problema con el formato específico de un informe específico.
Estamos viendo este error con el seguimiento de la pila a continuación, de forma intermitente.

  • Afecta varios informes diferentes que tenemos.
  • Afecta a uno informe en particular con más frecuencia que otros informes.
  • Una vez que el informe se ve afectado el mismo error a menudo aparecer en varios informes aproximadamente a la misma hora, por ejemplo. para los próximos 10 minutos.
  • El mismo informe ejecutado con los mismos parámetros puede funcionar cuando se ejecuta de nuevo (poco después) o la aplicación puede necesitar reiniciar antes de que el informe puede ser exitosamente re plazo.

Todos estos informes ya había trabajado sin ningún problema. Sin cambios en el servidor o código parece evidente que habría precipitado este error. Todos detrás de código para esto es VB.NET

Hemos tenido dificultades para reproducir en entornos de prueba y la actualización a la versión más reciente de Crystal no ha ayudado en absoluto. Cualquier ayuda o sugerencias que usted puede ser capaz de hacer para resolver este problema sería apreciada.


"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"
¿Fue útil?

Solución 3

Aislar el código de generación de informes.

Nuestra resolución final era tomar el código que se genera el informe y moverlo a su propio servicio aislado. Nuestro servicio original, entonces llama a nuestro nuevo servicio de cristal con los parámetros relevantes y archivo de Crystal RPT. Obviamente, esto es una solución costosa, ya que implica la modificación de todo el código de generación de informes para llamar al servicio de cristal en su lugar. El servicio de Cristal no muestra el error. El código no había cambiado además de eso, lo que sólo puede presumir la causa del error era algún tipo de interacción del motor de informes de Crystal y el medio ambiente dentro de nuestra aplicación.

Otros consejos

Después de muchos días, por fin he descubierto cuál es la raíz del problema, en caso de que esté incluyendo imágenes jpg en su informe .

Lo que pasa es que la RC para VS2008 o versiones posteriores, no puede manejar archivos jpg en modo CMYK . CR sólo puede manejar archivos jpg en el modo RGB.

Es curioso que las versiones más bajas de CR (el que vino con VS2003) podría manejar cualquier tipo de archivos jpg. Gracias, Crystal.

Para mí, el problema fue con el Crystal Report temporal que se genera en la carpeta TEMP en Windows. Hay un límite en el número de informes de Crystal temporales que pueden ser generados por el motor de informes de Crystal al procesar en un bucle. O bien el espacio en carpeta Temp se agota debido a la baja de memoria en C de accionamiento o el límite de los informes se alcanza después de que en un solo informe de cristal de ejecución solo no puede exportar más. Se le dará el error mencionado en la pregunta.

Para mí este tema fue recurrente en cada 500 informes que se han procesado (que estaba generando los informes dicen que, durante un año y exportarlos a un sistema de carpetas uno por uno usando mi solicitud)

La solución es simple. Siempre cerca y disponer la Rpt temporal de Crystal Report archivo después de exportarlo .



    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


¿Hay una posibilidad de que el objeto de informe se filtró en la memoria del servidor? Me encontré con un caso similar en el que el objeto de informe se almacenaba en un objeto de sesión, por lo que el informe no se necesita para obtener recargado como el usuario navega por las páginas. Sin embargo, cuando el usuario se realiza con el informe, el objeto permaneció en la reunión, y no fue limpiado adecuadamente cuando la sesión fue destruido por el servidor. He tenido que añadir un poco de código en el evento Session_End en Global.asax para encontrar el objeto de informe y llamar al método dispose en él.

El hecho de que este aparece de forma intermitente pero luego afecta a todos los informes para una cuestión de 10 minutos me hace pensar que podría ser relacionada con la sesión. En mi situación, el servidor llegó a un límite en el número de informes que podrían crearse en el servidor (en la memoria) porque no eran liberados. Los síntomas fueron similares a la suya.

Espero que esto ayude!

Prueba esto: Si dejó ningún espacio en blanco en el informe cristalino (encabezado, pie de página o cualquier sección) suprimirla. eso es todo. Tenía este problema y me fijo de esta manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top