CrmException: данный ключ отсутствует в словаре.при открытии существующей возможности - PullRequest
1 голос
/ 06 декабря 2011

Как видно из заголовка, мы получаем «CrmException: указанный ключ отсутствует в словаре».ошибка при попытке открыть существующую возможность.

Похоже, что это влияет только на некоторые записи, поскольку мы все еще можем открыть другие.Моя внутренняя реакция заключается в том, что одно из значений списка выбора каким-то образом было удалено из системы, но я не могу сказать однозначно.

Наверное, мой вопрос действительно состоит в том, как превратить это общее сообщение об ошибке во что-то полезное, чтобы исправитьошибка?

Вот трассировка стека в журналах трассировки CRM

[2011-12-05 17:00:33.848] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread:   26 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Error | ExceptionConverter.ConvertMessageAndErrorCode
at ExceptionConverter.ConvertMessageAndErrorCode(Exception exception, Int32& errorCode)
at ExceptionConverter.ToSingleFaultOther(Exception exception)
at ExceptionConverter.ToSingleFaultUntyped(Exception exception)
at ExceptionConverter.ConvertToFault(Exception exception)
at ExceptionConverter.TryConvertToFaultExceptionInternal(Exception exception, Boolean createNewFaultException, FaultException`1& faultException)
at FaultHelper.ConvertToFault(Exception exception)
at ErrorInformation..ctor(Exception exception, Uri requestUrl, Boolean logError)
at MainApplication.Application_Error(Object sender, EventArgs eventArguments)
at EventHandler.Invoke(Object sender, EventArgs e)
at HttpApplication.RaiseOnError()
at ApplicationStepManager.ResumeSteps(Exception error)
at HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
at HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
at ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
>System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #B89073F3: System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> Microsoft.Crm.CrmException: The given key was not present in the dictionary.
>       at            Microsoft.Crm.Application.Platform.ServiceCommands.PlatformCommand.XrmExecuteInternal()

в Microsoft.Crm.Application.Platform.ServiceCommands.RetrieveCommand.Execute () в Microsoft.Crm.Применение) в Microsoft.Crm.Application.Forms.AppForm.FormLoadEvent () в Microsoft.Crm.Application.Forms.AppForm.RaiseDataEvent (FormEventId eventId) в Microsoft.Crm.Application.Forms.EndUserForm.Initialize (сущность сущности).Crm.Application.Forms.CustomizableForm.Execute (сущность сущности, FormDescriptor fd) в Microsoft.Crm.Application.Components.PageHandlers.OpportunityRecordPageHandler.ConfigureFormHandler () в Microsoft.Crm.Application.Components.Utility.GenericEventProcessor.RaiseEvent (строковое имя-события) в Microsoft.Crm.rolidSystem.Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint) в System.Web.UI.Page.HandleError (исключение e) в System.WP.:контекст) на System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () на System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое значение &выполняется синхронно)

1 Ответ

2 голосов
/ 07 декабря 2011

Да, если вы получаете это исключение, когда плагин включен, а не когда плагин отключен, тогда ваш плагин выдает исключение, и это передается сообщению об ошибке, которое вы видите.

Скорее всего, это произойдет, потому что вы используете свойство в вашей динамической сущности, которого на самом деле нет в записи, на которой вы запускаете плагин (в данном случае это возможность).Проверьте, нет ли ошибок или неопубликованных настроек.

Для получения дополнительной информации о том, как предотвратить такую ​​ошибку, перейдите по этой ссылке: http://splatto.net/portfolio/blog/post/2010/07/30/0x80040265-The-given-key-was-not-present-in-the-dictionary.aspx

Еще один отличный способ проверить, что вызывает это исключение, - этозапустите удаленную отладку на плагине, чтобы увидеть, что вызывает исключение: http://msdn.microsoft.com/en-us/library/cc151088.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...