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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.02.2013, 14:55   #1  
probka is offline
probka
Участник
Аватар для probka
 
98 / 11 (1) +
Регистрация: 20.02.2012
Адрес: Ростов-на-Дону
CRM 4.0 Отладка плагина
Добрый день!
Я пытаюсь отладить плагин, подключенный к событию Create кастомной сущности new_grmember.

Начало плагина выглядит следующим образом:

X++:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
using Microsoft.Crm.Sdk.Query;
using Microsoft.Win32;

using Company.MsCrm40.Sdk;
using Company.MsCrm40;

using Company.Apps.Plugins.DataAccess;

namespace Company.Apps.Plugins
{
    public class PostCreateGroupMember : Plugin
    {
        public PostCreateGroupMember(string unsecureInfo, string secureInfo)
            : base(unsecureInfo, secureInfo)
        {
        }

        public override void Execute(IPluginExecutionContext context)
        {
             try
            {

                base.Execute(context);

                if (PluginConfiguration.LogIncomingMessages)
                {
                    Logger.WriteInfo("PostCreateGroupMember Plug-in running.\nPluginExecutionContext:\n" + PluginHelper.GetContextXml(context));
                }

                if (context.CallerOrigin is OfflineOrigin)
                    return;

                _entity = (DynamicEntity)GetTargetEntity(_currentContext);

                if (context.MessageName == "Create" && TargetEntity.Properties.Contains("new_groupid"))
                {
                    CreateVisits();
                 }

                UpdateGroupData(context);

            }
            catch (Exception ex)
            {
                StringBuilder errorMessage = new StringBuilder();

                errorMessage.AppendFormat("Plug-in {0} failed\n", this.GetType().ToString());

                errorMessage.AppendFormat("PrimaryEntityName: {0}\n", context.PrimaryEntityName);
                errorMessage.AppendFormat("MessageName: {0}\n", context.MessageName);
                errorMessage.AppendFormat("Error: {0}\n", ex.Message);

                InvalidPluginExecutionException invalidPluginExecutionException = new InvalidPluginExecutionException(errorMessage.ToString(), ex);

                invalidPluginExecutionException.Data.Add("PluginExecutionContext", PluginHelper.GetContextXml(context));

                Logger.WriteError(invalidPluginExecutionException);
 
                throw invalidPluginExecutionException;

            }
            finally
            {
                UpdatePluginCheckeron();
                Finally();
            }

        }
Полный текст внутренних процедур приводить не буду. Когда я в Microsoft Visual Studio 2010 подключаюсь к процессу w3wp.exe и ставлю точку останова на строчке
base.Execute(context);
ничего не происходит. Т.е. при создании нового экземпляра сущности отрабатывает плагин без остановки в этой точке. Складывается ощущение, что этот код не отрабатывается в принципе. Зато если я ставлю точку останова в методе Execute класса Plugin, от которого унаследован класс PostCreateGroupMember, то отладчик на этой точке останавливается и дальше я могу отследить его работу (в метод Execute класса PostCreateGroupMember он так и не заходит). Вопрос: почему так происходит? По каким причинам плагин может не отрабатывать? Регистрировала плагин и подключалась к процессу так, как описано в этой статье: http://mmcrm.ru/?p=977.
__________________
Так победим!


Последний раз редактировалось probka; 26.02.2013 в 15:55.
Старый 26.02.2013, 17:30   #2  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
1. Плагин у Вас работает или нет.

Чтобы быстро определить это попробуйте поставить в метод Execute
throw new InvalidPluginExecutionException("test");

Если ошибка произошла, значит все подключилось.
Если нет, проверяйте регистрацию плагина.
Он точно в синхронном режиме у Вас?

Я последнее время отказываюсь от DEBUG вообще.
Все делаю логированием с помощью спец библиотек или просто в файл пишу.
__________________
Мой блог https://procrm.tv
Старый 26.02.2013, 19:10   #3  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Вы неправильно зарегистрировали шаг обработки. На системное событие подписан базовый класс, а не дочерний. С точки зрения системы плагин - это наследник интерфейса IPlugin. При регистрации сборки нужно указать корректных наследников и тогда система будет инстанцировать их.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 26.02.2013, 19:21   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Я последнее время отказываюсь от DEBUG вообще.
Все делаю логированием с помощью спец библиотек или просто в файл пишу.
Удобно. Так же можно отказаться от Visual Studio и компилировать сборки из командной строки.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 26.02.2013, 23:22   #5  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Удобно. Так же можно отказаться от Visual Studio и компилировать сборки из командной строки.
Был случай невозможности DEBUG
при этом только логирование помогло. Также на боевых серверах отладить решение невозможно. Особенно если баг не воспроизводится на разработческом. Логировать действия в плагине удобно, и можно выключить режим самого лога Debug и прочее, чтобы мелочь не выводить.
__________________
Мой блог https://procrm.tv

Последний раз редактировалось g.Naukovych; 26.02.2013 в 23:29.
Старый 27.02.2013, 09:28   #6  
probka is offline
probka
Участник
Аватар для probka
 
98 / 11 (1) +
Регистрация: 20.02.2012
Адрес: Ростов-на-Дону
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
1. Плагин у Вас работает или нет.

Чтобы быстро определить это попробуйте поставить в метод Execute
throw new InvalidPluginExecutionException("test");

Если ошибка произошла, значит все подключилось.
Если нет, проверяйте регистрацию плагина.
Он точно в синхронном режиме у Вас?

Я последнее время отказываюсь от DEBUG вообще.
Все делаю логированием с помощью спец библиотек или просто в файл пишу.
Нет, ошибки не происходит. Плагин выполняется, но выполняется как-то странно. Когда он отключен, не происходит вообще ничего. Когда он включен, производится некоторая последовательность действий, которая указана в родительском классе и ряде других плагинов, но не та, что задается в самом плагине.
Да, плагин точно в синхронном режиме.
__________________
Так победим!

Старый 27.02.2013, 09:30   #7  
probka is offline
probka
Участник
Аватар для probka
 
98 / 11 (1) +
Регистрация: 20.02.2012
Адрес: Ростов-на-Дону
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Вы неправильно зарегистрировали шаг обработки. На системное событие подписан базовый класс, а не дочерний. С точки зрения системы плагин - это наследник интерфейса IPlugin. При регистрации сборки нужно указать корректных наследников и тогда система будет инстанцировать их.
Я зарегистрировала дочерний класс PostCreateGroupMember.
__________________
Так победим!

Старый 27.02.2013, 13:17   #8  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от probka Посмотреть сообщение
Я зарегистрировала дочерний класс PostCreateGroupMember.
Можно увидеть доказательства?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 27.02.2013, 14:17   #9  
probka is offline
probka
Участник
Аватар для probka
 
98 / 11 (1) +
Регистрация: 20.02.2012
Адрес: Ростов-на-Дону
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Можно увидеть доказательства?
__________________
Так победим!

Старый 05.03.2013, 10:18   #10  
probka is offline
probka
Участник
Аватар для probka
 
98 / 11 (1) +
Регистрация: 20.02.2012
Адрес: Ростов-на-Дону
Проблема была устранена при помощи полной перерегистрации всей сборки.
__________________
Так победим!

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 12 Blog bot Dynamics CRM: Blogs 0 30.01.2013 01:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 10 Blog bot Dynamics CRM: Blogs 0 17.08.2012 03:27
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 7 Blog bot Dynamics CRM: Blogs 0 27.03.2012 02:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 4 Blog bot Dynamics CRM: Blogs 0 24.09.2011 01:16
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05

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

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

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