【发布时间】:2011-07-01 21:47:41
【问题描述】:
我已向联系人实体添加了一个自定义属性(“custom_contacttype”)。该属性是由七个值组成的选择列表类型。我正在使用针对 CRM 4.0 的 Microsoft Dynamics CRM 的高级开发人员扩展进行开发。在我设置此属性的值并调用 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.Execute(PipelineExecutionContext 上下文) 在 ExternalMessageDispatcher.Execute(字符串 messageName、Int32 primaryObjectTypeCode、Int32 secondaryObjectTypeCode、PropertyBag 字段、CorrelationToken correlationToken、CallerOriginToken originToken、UserAuth userAuth、Guid callerId) 在 CrmServiceInternal.Update(字符串命名空间名称、BusinessEntityBase 实体、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, Binder binder, Object[] 参数, CultureInfo 文化, Boolean skipVisibilityChecks) 在 RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfo 文化) 在 LogicalMethodInfo.Invoke(对象目标,对象 [] 值) 在 WebServiceHandler.Invoke() 在 WebServiceHandler.CoreProcessRequest() 在 SyncSessionlessHandler.ProcessRequest(HttpContext 上下文) 在 CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously) 在 ApplicationStepManager.ResumeSteps(异常错误) 在 HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext 上下文,AsyncCallback cb,对象 extraData) 在 HttpRuntime.ProcessRequestInternal(HttpWorkerRequest WR) 在 HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest WR) 在 ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
Web 服务插件在 SdkMessageProcessingStepId 中失败:{27DF4121-19BC-DF11-A90E-005056887B79};实体名称:联系人;阶段:10;消息名称:更新;程序集名称:AccessCRM.ChangeLogContactData,AccessCRM,版本=1.0.0.0,文化=中性,PublicKeyToken=a030c130976783ab;类名: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(Stream from, Stream to, Exception 异常) 在 CompositeSoapExtensionExceptionHandler.Handle(流到,流从,异常异常) 在 CrmAuthenticationSoapExtensionBase.ProcessMessage(SoapMessage 消息) 在 SoapMessage.RunExtensions(SoapExtension[] 扩展,布尔 throwOnException) 在 SoapServerProtocol.WriteException(异常 e,流 outputStream) 在 WebServiceHandler.WriteException(异常 e) 在 WebServiceHandler.Invoke() 在 WebServiceHandler.CoreProcessRequest() 在 SyncSessionlessHandler.ProcessRequest(HttpContext 上下文) 在 CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously) 在 ApplicationStepManager.ResumeSteps(异常错误) 在 HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext 上下文,AsyncCallback cb,对象 extraData) 在 HttpRuntime.ProcessRequestInternal(HttpWorkerRequest WR) 在 HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest WR) 在 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(字符串 messageName、Int32 primaryObjectTypeCode、Int32 secondaryObjectTypeCode、PropertyBag 字段、CorrelationToken correlationToken、CallerOriginToken originToken、UserAuth userAuth、Guid callerId) 在 Microsoft.Crm.Sdk.CrmServiceInternal.Update(字符串命名空间名称、BusinessEntityBase 实体、CorrelationToken 相关令牌、CallerOriginToken originToken、UserAuth userAuth、Guid callerId) 在 Microsoft.Crm.Sdk.Crm2007.CrmService.Update(BusinessEntity 实体) --- 内部异常堆栈跟踪结束 ---
【问题讨论】:
标签: crm microsoft-dynamics xrm