【问题标题】:CRM 2011 plugin with no code returns "The given key was not present in the dictionary"没有代码的 CRM 2011 插件返回“字典中不存在给定的键”
【发布时间】:2015-11-30 22:55:44
【问题描述】:

我写了一个插件来更新销售订单上的一些数据,就在用户更新了记录本身之后。根据是否更改了某些日期,我想用格式化的日期更新另一个字段。

我遇到了错误“字典中不存在给定的键”,所以我添加了一些跟踪来查看它究竟在哪里返回了错误。然后我发现跟踪从未写出,所以我假设我写的代码永远不会被执行。确实是这样,因为如果我只是这样做

public class SalesOrderPlugin : IPlugin
{
    public void Execute(IServiceProvider serviceProvider)
    {

    }
}

我得到同样的错误:

Unhandled Exception: System.ServiceModel.FaultException`1
    [[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:
    Unexpected exception from plug-in (Execute): Iu.PreConsultants.Crm.SalesOrderPlugin: 
    System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.Detail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
    <ErrorCode>-2147220956</ErrorCode>
    <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
    <Message>Unexpected exception from plug-in (Execute): Iu.PreConsultants.Crm.SalesOrderPlugin: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.</Message>
    <Timestamp>2012-02-21T07:09:48.471378Z</Timestamp>
    <InnerFault i:nil="true" />
    <TraceText>

        [Iu.PreConsultants.Crm: Iu.PreConsultants.Crm.SalesOrderPlugin]
        [1486b5df-595c-e111-b7b0-46c950e6c8cd: Iu.PreConsultants.Crm.SalesOrderPlugin: Update of salesorder]


    </TraceText>
</OrganizationServiceFault>

插件的设置:

  • 验证后
  • 同步执行模式
  • 服务器部署

在托管设置上(沙盒)

SalesOrder 已更改并具有一些自定义属性。

对此的任何帮助将不胜感激!

亲切的问候,

文森特

【问题讨论】:

  • 你能修改那个插件的主体,通过测试抛出异常吗?只需添加: throw new ApplicationException("Hello, Exception!");。抛出异常将显示该特定错误消息。根据您的描述和给出的错误消息,我怀疑 CRM 正在执行您的插件库的旧版本。
  • 确实,我试过了,它仍然返回相同的异常。我还在开始时添加了一些跟踪信息,然后抛出了异常,但这也不起作用......我认为它甚至在插件执行之前就抛出了异常,这可能吗?
  • @VincentvanEderen:我认为这不可能。 glosrob 可能是对的。 CRM 可能正在执行引发异常的旧版本。您应该尝试重新编译并重新部署您的空插件。

标签: dynamics-crm-2011 dynamics-crm-online


【解决方案1】:

好的,现在可以了。看起来 glosrob 是对的,并且 CRM 保存了一个缓存版本。我尝试在 SDK 的注册工具上的 IPlugin 实现上使用“更新”,但这还不够。我必须先更新程序集,然后再更新 IPlugin 实现。

【讨论】:

  • 是的,这反映了我的经验——您必须先明确更新程序集,然后再更新所需的步骤。很高兴它被排序!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
  • 2018-12-05
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
相关资源
最近更新 更多