Показать сообщение отдельно
Старый 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.