Ошибка прерывистого кристалла отчетов «Запрос не может быть отправлен для фоновой обработки».

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

Вопрос

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

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

  • Это влияет на несколько разных отчетов, которые у нас есть.
  • Это влияет на один конкретный доклад чаще чаще, чем другие отчеты.
  • После того, как отчет повлияет, той же ошибка часто появится в нескольких отчетах примерно в то же время, например,. на следующие 10 минут.
  • Этот же отчет с одинаковыми параметрами может работать при запуске снова (вскоре после) или приложение может потребоваться перезапустить до того, как отчет может быть успешно запущен.

Эти отчеты все работали ранее без выпуска. Никаких изменений в сервере или коде кажется очевидным, что бы вывирило бы эту ошибку. Все код за это vb.net

У нас было трудно воспроизведение его в тестовых средах, и модернизация до последней версии кристалла не помогло вообще не помогло. Любая помощь или предложения, которые вы можете приступить к решению этой проблемы, будут оценены.


"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"
Это было полезно?

Решение 3

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

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

Другие советы

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

Дело в том, что Cr для VS2008 или более поздних версий, Не могу обрабатывать файлы JPG в режиме CMYK. Отказ CR только может обрабатывать файлы JPG в режиме RGB.

Смешно, что нижние версии CR (тот, который пришел с VS2003), может справиться с любыми видами файлов JPG. Спасибо, кристалл.

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

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

Решение простое. Всегда закрывайте и утилизируйте временный файл отчета о кристалле .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


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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top