Страница 1 из 2
Как перехватить эксепшен при формировании превью?
Добавлено: 10 сен 2015, 16:52
Michael
Обновил в своей программе генератор отчетов с 2013.2 на 2014.1. Дальше обновляться не могу, т.к. пока хочется сохранить совместимость с Framework 2.0.
После этого обновления у некоторых пользователей с высокой вероятностью стали происходить эксепшены при генерации превью отчета. Воспроизвести ошибку мне не удается, даже на тех же данных и на тех же ОС. Вероятно, проблема в конфигурации ОС пользователей. При этом у пользователей мелькает вот это окно:

- 96.png (47.86 КБ) 4553 просмотра
и в результате они видят вот такое превью:

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