![]() |
#1 |
Участник
|
Тип ошибки при программном создании записи
CRM 4.0
На событие Pre-Create сущности зарегистрирован плагин. Можно ли при программном создании записи этой сущности, в случае ошибки создания, определить, что это именно ошибка плагина, а не какая-то системная ошибка, или хотя бы получить текст ошибки, а не просто "Server was unable to process request". |
|
![]() |
#2 |
Moderator
|
Если речь идет об отладке, то можно подключить дебаггер к процессу w3wp.exe CRM сервера. Если вам надо просто показывать пользователю код ошибки, то поместите весь код в try catch и заворачивайте пойманные исключения в InvalidPluginExecutionException
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
![]() |
#3 |
Участник
|
Хм... Видимо я не совсем понятно объяснил задачу...
Имеется в виду ситуация, когда я вообше из другого приложения (из какого-нибудь ASP.NET расширения) создаю запись, на которую зарегистрирован плагин. |
|
![]() |
#4 |
Moderator
|
Тогда вряд ли.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
![]() |
#5 |
Участник
|
Для точного определения, что ошибка при создании или изменении объекта произошла в плагине, я использую блок try {} catch {}, и в блоке catch генерирую исключение типа InvalidPluginExecutionException, где прописываю свой текст сообщения. Пример:
voidIPlugin.Execute(IPluginExecutionContext context) { try { // Реализация плагина } catch (SoapHeaderException se) { throw new InvalidPluginExecutionException("Ошибка в плагине.", se); } catch (Exception ex) { throw new InvalidPluginExecutionException("Ошибка в плагине.", ex); } } Текст сообщения "Ошибка в плагине", передаваемый исключению позволяет определить, что ошибка произошла во время выполнения плагина. |
|
![]() |
#6 |
Moderator
|
Невнимательно читаете, Михаил. Нужно из другого приложения получить код ошибки. Веб сервис CRM вернет только общую ошибку.
Кроме того у вас код с душком. Второй catch ловит то, что выкидывает первый. ![]()
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
![]() |
#7 |
Участник
|
У SoapException есть свойство Detail типа XmlElement. Из него можно дернуть код ошибки и описание.
__________________
"Hello World!" 17 errors, 31 warnings |
|
![]() |
#8 |
Участник
|
Вопрос был в том, как я понял, как определить, что ошибка произошла именно в плагине. И второй catch никак не поймает первый.
|
|