Прерывистая ошибка Crystal Reports «Запрос не может быть отправлен для фоновой обработки». - PullRequest
4 голосов
/ 02 февраля 2010

Мы работаем с Crystal Reports на Windows Server 2008 с .NET Framework 3.5 SP1.

Я видел много причин общей ошибки: «Не удалось отправить запрос на фоновую обработку». на других форумах, однако они имеют тенденцию быть постоянными и повторяемыми, затрагивая только один отчет из-за определенной проблемы форматирования с конкретным отчетом.
Мы видим эту ошибку с помощью следующей трассировки стека, периодически.

  • Это влияет на несколько разных отчетов, которые мы имеем.
  • Влияет на один конкретный отчет чаще, чем на другие.
  • Как только отчет затрагивается, одна и та же ошибка часто появляется в нескольких отчетах примерно в одно и то же время, например. в течение следующих 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"

Ответы [ 5 ]

3 голосов
/ 03 апреля 2013

Через много дней, наконец, я обнаружил, в чем причина проблемы, если вы включаете jpg-изображения в свой отчет .

Дело в том, что CR для VS2008 или более поздних версий не может обрабатывать файлы jpg в режиме CMYK .CR может обрабатывать только jpg-файлы в режиме RGB.

Забавно, что более ранние версии CR (той, которая шла с VS2003) могли обрабатывать любые jpg-файлы.Спасибо, Кристал.

1 голос
/ 13 июля 2017

Для меня проблема была с временным отчетом Crystal, который генерируется в папке TEMP в Windows. Существует ограничение на количество временных отчетов Crystal, которые могут быть сгенерированы механизмом отчетов Crystal при обработке его в цикле. Либо пространство в папке Temp заканчивается из-за нехватки памяти на диске C, либо достигается предел отчетов, после которого отчет за один раз не может экспортировать отчет. Это даст ошибку, упомянутую в вопросе.

Для меня эта проблема повторялась при каждых 500 отчетах, которые были обработаны (я генерировал отчеты, скажем, в течение года и экспортировал их в системную папку один за другим, используя мое приложение)

Решение простое. Всегда закрывайте и удаляйте временный файл Crystal Report .rpt после его экспорта .



    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


1 голос
/ 30 ноября 2011

Изолировать код генерации отчета.

Наше окончательное решение состояло в том, чтобы взять код, который генерировал отчет, и переместить его в собственный изолированный сервис. Затем наш оригинальный сервис вызывает наш новый сервис Crystal с соответствующими параметрами и файлом Crystal RPT. Это, очевидно, дорогостоящее решение, поскольку оно включает в себя изменение всего кода генерации отчетов, чтобы вместо этого вызывать службу Crystal. Служба Crystal не выдает ошибку. Кроме того, код не изменился, поэтому мы можем только предположить, что причиной ошибки было некоторое взаимодействие механизма отчетов Crystal и среды нашего приложения.

0 голосов
/ 07 марта 2011

Попробуйте это: если вы оставили какое-либо пустое место в отчете Crystal (заголовок, нижний колонтитул или любые разделы), подавьте его. это все. У меня была эта проблема, и я решил эту проблему.

0 голосов
/ 02 февраля 2010

Есть ли вероятность, что объект отчета просочился в память сервера? Я столкнулся с похожим случаем, когда объект отчета хранился в объекте Session, поэтому отчет не нужно было перезагружать, когда пользователь перемещался между страницами. Однако когда пользователь закончил работу с отчетом, объект остался в сеансе и не был должным образом очищен, когда сеанс был уничтожен сервером. Мне пришлось добавить немного кода в событие Session_End в global.asax, чтобы найти объект отчета и вызвать для него метод dispose.

Тот факт, что это появляется периодически, но затем затрагивает все отчеты в течение 10 минут, заставляет меня думать, что это может быть связано с сеансом. В моей ситуации сервер достиг ограничения по количеству отчетов, которые могут быть созданы на сервере (в памяти), поскольку они не были выпущены. Симптомы были похожи на ваши.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...