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