AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.12.2012, 13:14   #1  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Почему плагин может отваливаться?
Повесила плагин на Update сущности.

При указании синхронного Execution Mode вылетал по тайм-ауту.

Не зная, как именно устроены "внутренности" CRM'а, предположила, что при попытке изменения сущности во время её же синхронного post-update возникает нечто вроде взаимо-блокировки.

Поменяла на режим на асинхронный - (о, чудо!) заработало!

Но ненадолго.
На следующий день плагин вдруг вообще перестал отрабатывать.
В Romote Debugger'е не ловится, и даже если проброс исключения в самом начале вставить - никаких признаков жизни не подаёт.

При этом если изменить режим на синхронный - работает (но всё с той же проблемой тайм-аута).

Что могло такого произойти, что он вдруг вот так отвалился?
Старый 13.12.2012, 13:56   #2  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
А у плагина много работы?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 13.12.2012, 14:50   #3  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Код плагина покажите, пожалуйста + как вы шаг регистрируете.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.12.2012, 15:21   #4  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
А у плагина много работы?
Он пересчитывает график наполнения плановых платежей по акцептированным фактическим.

Делает это, дёргая метод вин-сервиса.
Фишка в том, что он таки работает, но через раз.

Сепйчас вот, после перезагрузки сервера, снова работают, но только при Update и Create.

При Delete молча не отрабатывает.
Настройки те же, что и в Update. Раньше работал. Теперь не работает даже при переригистрации шага.
Старый 13.12.2012, 15:32   #5  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Violette Посмотреть сообщение
Делает это, дёргая метод вин-сервиса.
Может Веб сервис имеете ввиду?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.12.2012, 15:41   #6  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
1. У Вас видимо действительно блокировка. У Вас происходит получение сущности, для которой сейчас плагин работает?
В 2011 СРМ пост шаг находится в транзакции.
2. Чтобы подключиться удаленным отладчиком к асинхронному плагину необходимо подключаться к процессу CrmAsyncService.exe
3. Вместо Exception пишите лог в файл. Только дайте доступ к той папке, в которую писать будете.
4. Settings->System Jobs там показываются статусы асинхронных операций в том числе и асинхронных плагинов. Ваш плагин там есть?
__________________
Мой блог https://procrm.tv

Последний раз редактировалось g.Naukovych; 13.12.2012 в 15:49.
За это сообщение автора поблагодарили: Violette (1).
Старый 13.12.2012, 15:44   #7  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от a33ik Посмотреть сообщение
Код плагина покажите, пожалуйста + как вы шаг регистрируете.
Ну, код плагина получает id платежа и передаёт его в вызов сервиса.
Дело не в нём, скорее всего.

Вот пример настроек в Шаге неработающего Delete.
В шаге Update всё то же самое, а он работает почему-то...
Нажмите на изображение для увеличения
Название: ddd.gif
Просмотров: 587
Размер:	43.0 Кб
ID:	7982
Старый 13.12.2012, 15:49   #8  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от a33ik Посмотреть сообщение
Может Веб сервис имеете ввиду?
Нет. Именно вин-сервис.
Этот же сервис работает при акцептировании самих платежей, и в него же я добавила функционал для актуализации графика погашения плановых.

Сам сервис работает.

Но почему плагин отрабатывает через раз?
Старый 13.12.2012, 15:50   #9  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
А сам эндпоинт, который вы вызываете сам по себе долго отрабатывает?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.12.2012, 15:53   #10  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от a33ik Посмотреть сообщение
А сам эндпоинт, который вы вызываете сам по себе долго отрабатывает?
Да нет, недолго.
Секунд 5-6.
Старый 13.12.2012, 16:01   #11  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от 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  
Taker1796 is offline
Taker1796
Участник
Аватар для Taker1796
 
112 / 11 (1) +
Регистрация: 22.04.2012
Цитата:
Сообщение от Violette Посмотреть сообщение
Ну, код плагина получает id платежа и передаёт его в вызов сервиса.
Дело не в нём, скорее всего.

Вот пример настроек в Шаге неработающего Delete.
В шаге Update всё то же самое, а он работает почему-то...
Вложение 7982
Delete работает с EntityReference, возможно у вас есть проверка if(context.InputParameters["Target"] is Entity) - данный код не сработает на Delete

Ну это просто как вариант, мало ли)
За это сообщение автора поблагодарили: Violette (1).
Старый 13.12.2012, 16:04   #13  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
w3wp процесc IIS

Цитата:
Settings->System Jobs там показываются статусы асинхронных операций в том числе и асинхронных плагинов. Ваш плагин там есть?
Это смотрели?

Асинхронус сервис вообще работает?
служба виндовс
Microsoft Dynamics CRM Asynchronous Processing Service
Microsoft Dynamics CRM Asynchronous Processing Service (maintenance)
__________________
Мой блог https://procrm.tv
Старый 13.12.2012, 16:10   #14  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Violette Посмотреть сообщение
CrmAsyncService.exe в списке процессов что-то не видно.
Проверьте, что у вас при аттаче выделены указанные галочи, так же на всякий случай обвёл процесс, к которому нужно атачиться:

Нажмите на изображение для увеличения
Название: AttachStudio.png
Просмотров: 356
Размер:	19.4 Кб
ID:	7983

По поводу почему его не видно в процессах - проверьте в оснастке, что асинхронный сервис запущен:

Нажмите на изображение для увеличения
Название: AsyncService.png
Просмотров: 273
Размер:	108.2 Кб
ID:	7984
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Violette (1).
Старый 13.12.2012, 16:24   #15  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от Taker1796 Посмотреть сообщение
Delete работает с EntityReference, возможно у вас есть проверка if(context.InputParameters["Target"] is Entity) - данный код не сработает на Delete

Ну это просто как вариант, мало ли)
Мысль интересная, но в этом случае он всё-таки должен был выругаться:

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  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Где хранится базовый класс, от которого плагин наследуется. в отдельной длл?
Если да, где хранится эта длл?
__________________
Мой блог https://procrm.tv
Старый 13.12.2012, 16:40   #17  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
AsyncService скорее всего...
Асинхронный сервис может и работает, но плохо. То есть в процессах Windows он может и запущен, но если там много блокировок - то очередь просто не продвигается. Потому и плагин асинхронный не отрабатывает.
На всякий случай загляните в модуль "настройки", где откройте список "Системные задания" и выберите представление "Заблокированные системные задания". Если у Вас там есть записи - то нужно выяснять причину блокировок, устранять её и тогда асинхронные процессы и плагины будут работать (до новой блокировки - неплохо бы утранить и причину возникновения блокировок, если таковые возникают).
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!

Последний раз редактировалось Likefire; 13.12.2012 в 16:44.
Старый 14.12.2012, 11:24   #18  
Violette is offline
Violette
Участник
Аватар для Violette
 
18 / 10 (1) +
Регистрация: 06.11.2012
Адрес: Москва
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Где хранится базовый класс, от которого плагин наследуется. в отдельной длл?
Если да, где хранится эта длл?
Там солюшн со множеством классов-плагинов и сопутствубщих классов.
С этим всё в порядке.

Проблема была в том, что к w3wp.exe аттачилась и не могла отловить срабатывание асинхронного плагина.

Теперь всё в порядке благодаря коллективному разуму.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM 4.0: Плагин на Assign не запускается из Workflow Ksani Dynamics CRM: Разработка 10 21.03.2012 12:39
Плагин Nvovka Dynamics CRM: Разработка 3 14.10.2011 23:46
Не срабатывает плагин Буденый Dynamics CRM: Разработка 11 14.02.2011 11:35
Плагин на изменение подразделения пользователя xmarina Dynamics CRM: Разработка 6 23.11.2010 15:04
Плагин на создании Заказа Krom Dynamics CRM: Разработка 4 04.08.2010 14:48

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:02.