Я добавил пользовательский атрибут ("custom_contacttype") к объекту Contact.Этот атрибут имеет тип списка выбора, который состоит из семи значений.Я занимаюсь разработкой с использованием расширений Advanced Developer Extensions для Microsoft Dynamics CRM против CRM 4.0.После того, как я установил значение для этого атрибута и вызвал SaveChanges (), я получаю «Ссылка на объект не установлена для экземпляра объекта».ошибка.Я боролся с этим некоторое время.Что я делаю неправильно?Ниже приведен мой код:
var crm = new CrmDataContext(context.Connection);
var saveContact = crm.GetEntities("contact").Where(p => p.GetPropertyValue<Guid> ("contactid") == contact.Id.Value).Single();
saveContact.SetPropertyValue("custom_contacttype", 2, typeof(Picklist));
crm.UpdateObject(saveContact);
crm.SaveChanges();
Журнал трассировки с сервера CRM: [2011-07-01 16: 39: 33.7] Процесс: w3wp | Организация: f827deb3-c6cc-df11-bc07-005056887b79 | Тема:8 | Категория: Platform.Sdk | Пользователь: 822138f1-c574-e011-9dca-005056887b79 | Уровень: Ошибка |PluginStep.Execute в PluginStep.Execute (контекст PipelineExecutionContext) в Pipeline.Execute (контекст PipelineExecutionContext) в MessageProcessor.Execute (контекст PipelineExecutionContext) в контексте InternalMessageDispatcher.поля, correlationToken correlationToken, CallerOriginToken originToken, USERAUTH USERAUTH, Guid CallerID) в CrmServiceInternal.Update (String NamespaceName, BusinessEntityBase сущности, correlationToken correlationToken, CallerOriginToken originToken, USERAUTH USERAUTH, Guid CallerID) в CrmService.Update (BusinessEntity лица) в RuntimeMethodHandle._InvokeMethodFast (Цель объекта, аргументы Object [], SignatureStruct & sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) в RuntimeMethodInfo.Invoke (Object obj, BindingFlags invokeAttr, связыватель, параметры Object [], культ CultureInfoлогическое skipVisibilityChecks) в RuntimeMethodInfo.Invoke (Object obj, BindingFlags invokeAttr, Binder binder, параметры Object [], CultureInfo culture) в LogicalMethodInfo.Invoke (объектная цель, Object [] значения) в WebServiceHandler.InvocessPro в (Web)() в SyncSessionlessHandler.ProcessRequest (контекст HttpContext) в CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () в HttpApplication.ExecuteStep (шаг IExecutionStep. Ошибка приложения.IHttpAsyncHandler.BeginProcessRequest (контекст HttpContext, AsyncCallback cb, объект extraData) по адресу HttpRuntime.ProcessRequestInternal (HttpWorkerRequest wr) по адресу HttpRuntime.ProcessRequestNoDemand (100t * Intr)Ошибка подключаемого модуля службы в SdkMessageProcessingStepId: {27DF4121-19BC-DF11-A90E-005056887B79};EntityName: контакт;Стадия: 10;MessageName: обновление;AssemblyName: AccessCRM.ChangeLogContactData, AccessCRM, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = a030c130976783ab;ClassName: AccessCRM.ChangeLogContactData;Исключение: необработанное Исключение: System.NullReferenceException: Ссылка на объект не установлена на экземпляр объекта.в AccessCRM.PluginUtilities.GetStringValueFromProperty (свойство p) в AccessCRM.ChangeLogContactData.Execute (контекст IPluginExecutionContext) в Microsoft.Crm.Extensibility.PluginStep.Execute (контекст PipelineExecutionContext).[2011-07-01 16: 39: 33.7] Процесс: w3wp | Организация: f827deb3-c6cc-df11-bc07-005056887b79 | Тема: 8 | Категория: Platform.Sdk | Пользователь: 822138f1-c574-e011-9dca-005056887b79 |Уровень: Ошибка |PluginExecutionExceptionHandler.Handle в PluginExecutionExceptionHandler.Handle (Поток из, Поток в, Исключение) в CompositeSoapExtensionExceptionHandler.Handle (Поток в, Поток из, Исключение) в сообщении CrmAuthenticationSoapExtensionBase.ProcessMessage (SoapMesssionException)throwOnException)в SoapServerProtocol.WriteException (исключение e, Stream outputStream)
в WebServiceHandler.WriteException (исключение e)
в WebServiceHandler.Invoke ()
в WebServiceHandler.CoreProcessRequest ()
в SyncSessionlessHandler.ProcessRequest (контекст HttpContext)
в CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()
в HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно)
в ApplicationStepManager.ResumeSteps (ошибка исключения)
в HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest (контекст HttpContext, AsyncCallback cb, Object extraData)
в HttpRuntime.ProcessRequestInternal (HttpWorkerRequest wr)
at HttpRuntime.ProcessRequestNoDemand (HttpWorkerRequest wr)
at ISAPIRuntime.ProcessRequest (IntPtr ecb, Int32 iWRType)
Обнаружено CrmSoapExtension InvalidPluginExecutionException:
System.Web.Services.Protocols.SoapException: серверу не удалось обработать запрос. ---> Microsoft.Crm.Sdk.InvalidPluginExecutionException: ссылка на объект не установлена для экземпляра объекта. ---> System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
в AccessCRM.PluginUtilities.GetStringValueFromProperty (свойство p)
в AccessCRM.ChangeLogContactData.Execute (контекст IPluginExecutionContext)
в Microsoft.Crm.Extensibility.PluginStep.Execute (контекст PipelineExecutionContext)
--- Конец внутренней трассировки стека исключений ---
в Microsoft.Crm.Extensibility.PluginStep.Execute (контекст PipelineExecutionContext)
в Microsoft.Crm.Extensibility.Pipeline.Execute (контекст PipelineExecutionContext)
в Microsoft.Crm.Extensibility.MessageProcessor.Execute (контекст PipelineExecutionContext)
в Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute (контекст PipelineExecutionContext)
в Microsoft.Crm.Extensibility.ExternalMessageDispatcher.Execute (String messageName, Int32 primaryObjectTypeCode, Int32 вторичныйObjectTypeCode, поля PropertyBag, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid caller)
в Microsoft.Crm.Sdk.CrmServiceInternal.Update (строка namespaceName, сущность BusinessEntityBase, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
в Microsoft.Crm.Sdk.Crm2007.CrmService.Update (субъект BusinessEntity)
--- Конец внутренней трассировки стека исключений ---