Dynamics crm 2011 CRM 2011插件工作正常,但出现错误

Dynamics crm 2011 CRM 2011插件工作正常,但出现错误,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,我正在开发一个CRM 2011插件,如果用户停用帐户,该插件会更改帐户实体上一个字段的值。我花了很多时间想知道出了什么问题,因为我每次停用某个帐户时都会收到以下错误 错误。发生错误。请重试此操作。如果问题仍然存在,请检查Microsoft Dynamics CRM社区以获取解决方案,或与您组织的Microsoft Dynamics CRM管理员联系。最后,您可以与Microsoft支持部门联系 但过了一段时间,我注意到,即使这个错误,我的插件实际上工作得很好。下面是我的代码以防万一(请注意,我们

我正在开发一个CRM 2011插件,如果用户停用帐户,该插件会更改帐户实体上一个字段的值。我花了很多时间想知道出了什么问题,因为我每次停用某个帐户时都会收到以下错误

错误。发生错误。请重试此操作。如果问题仍然存在,请检查Microsoft Dynamics CRM社区以获取解决方案,或与您组织的Microsoft Dynamics CRM管理员联系。最后,您可以与Microsoft支持部门联系

但过了一段时间,我注意到,即使这个错误,我的插件实际上工作得很好。下面是我的代码以防万一(请注意,我们将我们的帐户称为客户)

Entity client=(Entity)context.InputParameters[“Target”];
OptionSetValue状态=(OptionSetValue)客户端[“状态代码”];
如果(state.Value==1)
{
OptionSetValue客户端状态=新的OptionSetValue(100000000);
客户端[“customertypecode”]=客户端状态;
服务更新(客户);
}
那么有没有人想到是什么导致了这个问题?如果我禁用我的插件,然后停用任何帐户,它的工作完全没有任何错误

我的插件在操作前同步注册


提前谢谢你

那么您的插件是在SetStateDynamic消息的预操作中注册的?你要做的就是更新customertypecode?我的猜测是,由于您没有显示代码,您没有从插件上下文中获得IOrganizationService。

当您的插件订阅了
SetState
SetStateDynamicEntity
消息时,实体不在
IPluginExecutionContext.InputParameters[“Target”]

这些消息有三个InputParameters:

  • “EntityMoniker”(EntityReference)
  • “状态”(选项设置值)
  • “状态”(选项设置值)
因此,没有“目标”

EntityReference clientRef=context.InputParameters[“EntityMoniker”]作为EntityReference;
OptionSetValue newStateCode=context.InputParameters[“State”]作为OptionSetValue;
if(newStateCode.Value==1)
{
Entity updateClient=新实体(clientRef.LogicalName);
updateClient.Id=clientRef.Id;
updateClient[“customertypecode”]=新选项设置值(100000000);
服务更新(updateClient);
}
当您的插件订阅了
更新
消息时:

既然您处于操作前阶段,并且目标实体是您想要更新的实际实体,为什么要调用
service.update
?只需将该属性添加到目标实体并完成它

Entity client=(Entity)context.InputParameters[“Target”];
OptionSetValue状态=(OptionSetValue)客户端[“状态代码”];
如果(state.Value==1)
{
OptionSetValue客户端状态=新的OptionSetValue(100000000);
客户端[“customertypecode”]=客户端状态;
}

看不出您的代码有任何错误。你能把整个插件代码放进去吗?甚至值得尝试再次注册插件。