13.12.2012, 13:14 | #1 |
Участник
|
Почему плагин может отваливаться?
Повесила плагин на Update сущности.
При указании синхронного Execution Mode вылетал по тайм-ауту. Не зная, как именно устроены "внутренности" CRM'а, предположила, что при попытке изменения сущности во время её же синхронного post-update возникает нечто вроде взаимо-блокировки. Поменяла на режим на асинхронный - (о, чудо!) заработало! Но ненадолго. На следующий день плагин вдруг вообще перестал отрабатывать. В Romote Debugger'е не ловится, и даже если проброс исключения в самом начале вставить - никаких признаков жизни не подаёт. При этом если изменить режим на синхронный - работает (но всё с той же проблемой тайм-аута). Что могло такого произойти, что он вдруг вот так отвалился? |
|
13.12.2012, 13:56 | #2 |
Консультант-джедай
|
А у плагина много работы?
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
13.12.2012, 14:50 | #3 |
Чайный пьяница
|
Код плагина покажите, пожалуйста + как вы шаг регистрируете.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
13.12.2012, 15:21 | #4 |
Участник
|
Он пересчитывает график наполнения плановых платежей по акцептированным фактическим.
Делает это, дёргая метод вин-сервиса. Фишка в том, что он таки работает, но через раз. Сепйчас вот, после перезагрузки сервера, снова работают, но только при Update и Create. При Delete молча не отрабатывает. Настройки те же, что и в Update. Раньше работал. Теперь не работает даже при переригистрации шага. |
|
13.12.2012, 15:32 | #5 |
Чайный пьяница
|
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
13.12.2012, 15:41 | #6 |
Участник
|
1. У Вас видимо действительно блокировка. У Вас происходит получение сущности, для которой сейчас плагин работает?
В 2011 СРМ пост шаг находится в транзакции. 2. Чтобы подключиться удаленным отладчиком к асинхронному плагину необходимо подключаться к процессу CrmAsyncService.exe 3. Вместо Exception пишите лог в файл. Только дайте доступ к той папке, в которую писать будете. 4. Settings->System Jobs там показываются статусы асинхронных операций в том числе и асинхронных плагинов. Ваш плагин там есть? Последний раз редактировалось g.Naukovych; 13.12.2012 в 15:49. |
|
|
За это сообщение автора поблагодарили: Violette (1). |
13.12.2012, 15:44 | #7 |
Участник
|
Ну, код плагина получает id платежа и передаёт его в вызов сервиса.
Дело не в нём, скорее всего. Вот пример настроек в Шаге неработающего Delete. В шаге Update всё то же самое, а он работает почему-то... |
|
13.12.2012, 15:49 | #8 |
Участник
|
|
|
13.12.2012, 15:50 | #9 |
Чайный пьяница
|
А сам эндпоинт, который вы вызываете сам по себе долго отрабатывает?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
13.12.2012, 15:53 | #10 |
Участник
|
|
|
13.12.2012, 16:01 | #11 |
Участник
|
Цитата:
Сообщение от g.Naukovych
1. У Вас видимо действительно блокировка. У Вас происходит получение сущности, для которой сейчас плагин работает?
В 2011 СРМ пост шаг находится в транзакции. 2. Чтобы подключиться удаленным отладчиком к асинхронному плагину необходимо подключаться к процессу CrmAsyncService.exe 3. Вместо Exception пишите лог в файл. Только дайте доступ к той папке, в которую писать будете. 4. Settings->System Jobs там показываются статусы асинхронных операций в том числе и асинхронных плагинов. Ваш плагин там есть? Не вызывается специальное тестовое исключение throw new Exception("Работает, блин!"); Аттачусь к w3wp.exe (что за зверь - не знаю. по инструкции рекомендован). Но он действительно схватывается только в синхронных плагинах. CrmAsyncService.exe в списке процессов что-то не видно. |
|
13.12.2012, 16:04 | #12 |
Участник
|
Цитата:
Сообщение от Violette
Ну, код плагина получает id платежа и передаёт его в вызов сервиса.
Дело не в нём, скорее всего. Вот пример настроек в Шаге неработающего Delete. В шаге Update всё то же самое, а он работает почему-то... Вложение 7982 Ну это просто как вариант, мало ли) |
|
|
За это сообщение автора поблагодарили: Violette (1). |
13.12.2012, 16:04 | #13 |
Участник
|
w3wp процесc IIS
Цитата:
Settings->System Jobs там показываются статусы асинхронных операций в том числе и асинхронных плагинов. Ваш плагин там есть?
Асинхронус сервис вообще работает? служба виндовс Microsoft Dynamics CRM Asynchronous Processing Service Microsoft Dynamics CRM Asynchronous Processing Service (maintenance) |
|
13.12.2012, 16:10 | #14 |
Чайный пьяница
|
Проверьте, что у вас при аттаче выделены указанные галочи, так же на всякий случай обвёл процесс, к которому нужно атачиться:
По поводу почему его не видно в процессах - проверьте в оснастке, что асинхронный сервис запущен:
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Violette (1). |
13.12.2012, 16:24 | #15 |
Участник
|
Цитата:
public override void Execute(IServiceProvider serviceProvider) { //throw new Exception("Работает, блин!"); base.Execute(serviceProvider); Microsoft.Xrm.Sdk.Entity target = (Microsoft.Xrm.Sdk.Entity)_currentContext.InputParameters["Target"]; string id = target.Attributes["new_paymentplanid"].ToString(); Guid gid = new Guid(id); CallPaymentService(gid); } |
|
13.12.2012, 16:35 | #16 |
Участник
|
Где хранится базовый класс, от которого плагин наследуется. в отдельной длл?
Если да, где хранится эта длл? |
|
13.12.2012, 16:40 | #17 |
Заноза в заднице
|
AsyncService скорее всего...
Асинхронный сервис может и работает, но плохо. То есть в процессах Windows он может и запущен, но если там много блокировок - то очередь просто не продвигается. Потому и плагин асинхронный не отрабатывает.
На всякий случай загляните в модуль "настройки", где откройте список "Системные задания" и выберите представление "Заблокированные системные задания". Если у Вас там есть записи - то нужно выяснять причину блокировок, устранять её и тогда асинхронные процессы и плагины будут работать (до новой блокировки - неплохо бы утранить и причину возникновения блокировок, если таковые возникают).
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! Последний раз редактировалось Likefire; 13.12.2012 в 16:44. |
|
14.12.2012, 11:24 | #18 |
Участник
|
Цитата:
С этим всё в порядке. Проблема была в том, что к w3wp.exe аттачилась и не могла отловить срабатывание асинхронного плагина. Теперь всё в порядке благодаря коллективному разуму. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
CRM 4.0: Плагин на Assign не запускается из Workflow | 10 | |||
Плагин | 3 | |||
Не срабатывает плагин | 11 | |||
Плагин на изменение подразделения пользователя | 6 | |||
Плагин на создании Заказа | 4 |
|