Страница 1 из 2

Как перехватить эксепшен при формировании превью?

Добавлено: 10 сен 2015, 16:52
Michael
Обновил в своей программе генератор отчетов с 2013.2 на 2014.1. Дальше обновляться не могу, т.к. пока хочется сохранить совместимость с Framework 2.0.
После этого обновления у некоторых пользователей с высокой вероятностью стали происходить эксепшены при генерации превью отчета. Воспроизвести ошибку мне не удается, даже на тех же данных и на тех же ОС. Вероятно, проблема в конфигурации ОС пользователей. При этом у пользователей мелькает вот это окно:
96.png
96.png (47.86 КБ) 4553 просмотра
и в результате они видят вот такое превью:
97.png
97.png (36.61 КБ) 4553 просмотра
При этом распечатывается отчет корректно. Нажать в первом окне кнопку "Сведения" невозможно, т.к. оно очень быстро исчезает. В связи с этим хочется как-то перехватить этот эксепшен и получить стек вызова. Как вариант, записать данную ошибку в лог. Ну и в идеале - вообще исключить данную ошибку.

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 10 сен 2015, 17:59
HighAley
Здравствуйте, Михаил.

К сожалению, мы не можем назвать причину происходящего и не можем помочь в её решении.
Нам необходима дополнительная информация по проблеме.
Когда возникает проблема? Каждый раз или нет? После каких действий?

Спасибо.

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 10 сен 2015, 19:20
Michael
Проблема возникает не всегда, вероятность 90%. Возникает при отображении превью отчета. От самого отчета и данных в нем не зависит, у меня десятки шаблонов отчетов, ошибка возникает на разных и зависит скорее от компьютера пользователя. Причем на одном может стабильно работать без проблем, на другом стабильно выдавать ошибку.

Вот темы с обсуждением этой ошибки: http://printstore.ru/forum/viewtopic.php?t=1210, http://printstore.ru/forum/viewtopic.php?t=1217.

Я нашел, что есть следующие настройки генератора отчетов:
StiOptions.Engine.HideExceptions
StiOptions.Engine.HideMessages
StiOptions.Engine.LogEnabled
StiOptions.Engine.TraceEnabled

Но документацию и примеров кода по ним я не нашел и непонятно, например, применимы ли данные настройки к движку Reports.Net и куда сохраняется лог, если его включить.

Есть только вот что:
10.7 How to show all exceptions which are invoked in Stimulsoft
Reports.Net?
Set the static StiOptions.Engine.HideExceptions property in false.
Здесь непонятно, установка данного параметра в TRUE только скроет окошки с информацией об исключении или пробросит их на уровень выше и я смогу обработать это исключение?

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 10 сен 2015, 20:00
Michael
С логом разобрался - создается файл report.log в папке программы. Есть ли возможность настройки лога?

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 11 сен 2015, 09:53
DmitryRu
Михаил, Вы бы кнопку "Сведения" на первом скриншоте нажали бы для пояснения проблемы

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 11 сен 2015, 10:06
Michael
Пожалуйста, читайте внимательнее, я написал в первом сообщении:
Нажать в первом окне кнопку "Сведения" невозможно, т.к. оно очень быстро исчезает.
Если бы можно было нажать эту кнопку, вопрос давно был бы закрыт.

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 11 сен 2015, 15:30
HighAley
Здравсвтуйте.

Вы можете использовать следующий код для включения лога.

Код: Выделить всё

Stimulsoft.Report.StiLogService.LogEnabled = true;
StiLogService service = StiConfig.Services.GetService(typeof(StiLogService)) as StiLogService;
service.LogPath = "Report.log"; // Path and filename
Попробуйте также посмотреть журнал событий Windows. Там должна сохраняться информация об ошибках.

Спасибо.

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 11 сен 2015, 16:12
Michael
Спасибо. Я уже собрал версию с Stimulsoft.Report.StiLogService.LogEnabled = true. При этом лог файл формируется в папке с программой. Отправил пользователю, жду ответа.

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 11 сен 2015, 16:42
HighAley
Ждём новостей от вас.

Спасибо.

Re: Как перехватить эксепшен при формировании превью?

Добавлено: 14 сен 2015, 17:33
Michael
Пользователь мне ответил. Вот содержимое файла:

2015:09:14, 16:02: Отчет: Rendering report
2015:09:14, 16:02: Отчет: Rendering report
2015:09:14, 16:03: Отчет: Rendering report
2015:09:14, 16:03: Отчет: Rendering report

Сообщение об ошибке проскакивает, вместо предпросмотра красный квадрат, в лог ничего не пишется. Есть ли еще какие-то варианты понять причины ошибки?