Плагин CRM 2011 без кода возвращает «Указанный ключ отсутствует в словаре» - PullRequest
1 голос
/ 21 февраля 2012

Я написал плагин для обновления некоторых данных в продавце сразу после того, как пользователь обновил саму запись.В зависимости от того, были ли изменены определенные даты, я хочу обновить другое поле с форматированной датой.

Я столкнулся с ошибкой "Указанный ключ отсутствует в словаре", поэтому я добавил несколько трасс, чтобы увидеть, гдеэто точно вернуло ошибку.Затем я обнаружил, что трассировка никогда не записывалась, поэтому я предположил, что написанный мной код никогда не будет выполнен.Это действительно так, потому что если я просто сделаю

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>

Настройки для плагина:

  • Post-validation
  • Режим синхронного выполнения
  • Развертывание сервера

В размещенной конфигурации (изолированной среде)

SalesOrder был изменен и имеет некоторые пользовательские атрибуты.

Любая помощь по этому вопросу будет принята с благодарностью!

С уважением,

Винсент

1 Ответ

1 голос
/ 22 февраля 2012

Хорошо, теперь это работает. Кажется, что glosrob был прав, и CRM сохранил кешированную версию. Я пытался использовать «Обновление» для реализаций IPlugin в инструменте регистрации из SDK, но этого было недостаточно. Сначала мне пришлось обновить сборку, а после этого также были обновлены реализации IPlugin.

...