Добрый день!
Я пытаюсь отладить плагин, подключенный к событию 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.