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

TaskCanceledException: a task was cancelled.

Если я загружу меньше данных, отчет будет работать хорошо.

У меня вопрос, есть способ избежать TaskCanceledException и позволить времени рендеринга занять столько, сколько нужно для рендеринга отчета?

0
Okyam 2 Янв 2018 в 23:49

2 ответа

Лучший ответ

Спасибо Анкит Виджай за ваш ответ, ответ должен быть в тайм-ауте, как вы упомянули, мое решение было следующим.

Я использовал встроенный сервер jsreport, и я установил время ожидания следующим образом

embeddedReportingServer.ReportingService.HttpClientTimeout = TimeSpan.FromMinutes(40);

С этой строкой кода я перестаю получать эту ошибку: TaskCanceledException: задача была отменена при отображении jsreport

Затем, когда я снова тестировал, я получил эту ошибку с фантомным процессом:

Невозможно отобразить шаблон. Ошибка при рендеринге отчета: тайм-аут при фантомном выполнении.

В конце концов, я решил это, добавив конфигурацию на свой встроенный сервер, как это

Helper.embeddedReportingServer.Configuration = new
            {

                phantom = new
                {
                    timeout = 900000,
                    numberOfWorkers = 2
                },


                tasks = new
                {
                    numberOfWorkers = 2,
                    timeout = 900000,


                }

            };
1
Okyam 3 Янв 2018 в 14:58

TaskCanceledException, скорее всего, должен прийти из-за тайм-аута.

Попробуйте увеличить время ожидания с помощью конфигурации jsreport. Подробнее о конфигурации jsreport можно узнать здесь. Я сам не пробовал, но это должно быть свойство tasks.timeout.

0
Ankit Vijay 2 Янв 2018 в 21:55