javascript - 尝试在 CRM 2011 UR 12 中使用 XRMServiceToolkit 反序列化消息时出错

标签 javascript performance serialization dynamics-crm-2011 dynamics-crm

本周我从 UR 11 升级到 UR 12,在测试我的环境时遇到了一些问题。我已经运行了自定义代码验证工具并修复了大多数可能的 JS 相关问题,并将代码更改为使用 XrmServiceToolkit 而不是 CrmServiceToolkit。下面是每次我尝试保存并且我的 JS 运行服务事件 (SA) 记录的 XrmServiceToolkit.Soap.Create() 时收到的消息。我认为该消息与将团队记录分配给 SA 的所有者字段有关,因为如果我删除此分配,则不会出现错误。

可能是什么问题导致了这种情况?

我见过一些这样的问题,但与插件有关,而不是与 JS 相关。我还禁用了所有在创建 SA 时运行的自定义插件,因此在创建完成的同时不应触发任何插件。

Microsoft Dynamics CRM Error Report Contents

<CrmScriptErrorReport>
<ReportVersion>1.0</ReportVersion>
<ScriptErrorDetails>
<Message>The formatter threw an exception while trying to deserialize the message:   There was an error while trying to deserialize parameter http://schemas.microsoft.com/xrm/2011/Contracts/Services:entity. The InnerException message  was 'Error in line 1 position 883. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.'.  Please see InnerException for more details.</Message>
<Line>1622</Line>
<URL>/%7B635422648580003236%7D/WebResources/rst_XrmServiceToolkit</URL>
<PageURL>/userdefined/edit.aspx?etc=112&id=%7bF9288110-D780-F54A-51C9-BB67A8F69A6D%7d&pagemode=iframe</PageURL>

我在保存此记录时还运行了诊断工具:

诊断工具跟踪详细信息:

[2014-08-06 15:31:24.545] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread:   21 |Category: Platform.Sdk |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: b84df6d9-3038-4aae-a63f-3b58e8db4c8c | ServiceModelTraceRedirector.TraceData  ilOffset = 0x45
http://msdn.microsoft.com/en-US/library/System.ServiceModel.Diagnostics.TraceHandledException.aspxHandling an exception. Exception details: System.ServiceModel.Dispatcher.NetDispatcherFaultException: The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://schemas.microsoft.com/xrm/2011/Contracts/Services:entity. The InnerException message was 'Error in line 1 position 871. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.'.  Please see InnerException for more details. ---> System.Runtime.Serialization.SerializationException: Error in line 1 position 871. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadKeyValuePairOfstringanyTypeFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadAttributeCollectionFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract )
at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadEntityFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
--- End of inner exception stack trace ---
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)/LM/W3SVC/1/ROOT-1-130517440714266137System.ServiceModel.Dispatcher.NetDispatcherFaultException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://schemas.microsoft.com/xrm/2011/Contracts/Services:entity. The InnerException message was 'Error in line 1 position 871. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.'.  Please see InnerException for more details.   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)System.ServiceModel.Dispatcher.NetDispatcherFaultException: The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://schemas.microsoft.com/xrm/2011/Contracts/Services:entity. The InnerException message was 'Error in line 1 position 871. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.'.  Please see InnerException for more details. ---&gt; System.Runtime.Serialization.SerializationException: Error in line 1 position 871. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadKeyValuePairOfstringanyTypeFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadAttributeCollectionFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract )
at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadEntityFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
--- End of inner exception stack trace ---
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)System.Runtime.Serialization.SerializationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Error in line 1 position 871. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.   at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadKeyValuePairOfstringanyTypeFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadAttributeCollectionFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract )
at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadEntityFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)System.Runtime.Serialization.SerializationException: Error in line 1 position 871. Element 'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value' contains data from a type that maps to the name 'http://www.w3.org/2001/XMLSchema:team'. The deserializer has no knowledge of any type that maps to this name. Consider changing the implementation of the ResolveName method on your DataContractResolver to return a non-null value for name 'team' and namespace 'http://www.w3.org/2001/XMLSchema'.
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadKeyValuePairOfstringanyTypeFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadAttributeCollectionFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract )
at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
at ReadEntityFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)

添加了导致此错误的以下代码。我分配所有者的部分是导致第一个反序列化错误的部分(我分配的所有者是一个团队)。如果我注释掉这部分,那么我为设备创建事件方的部分也会导致错误。

CreateServiceActivity = function (aszServiceGUID, aiIsSavingMode) {

var oTempSA = GetServiceActivityData(aszServiceGUID);
var oSA = new XrmServiceToolkit.Soap.BusinessEntity("serviceappointment");

if (oTempSA.attributes["serviceid"] != null) {
    oSA.attributes["serviceid"] = oTempSA.attributes["serviceid"].id;
    oSA.attributes["subject"] = oTempSA.attributes["serviceid"].name;
}

if (oTempSA.attributes["ownerid"] != null) {

    //HERE IS WHERE A TEAM IS ASSIGNED TO THE SA. oTempSA also has a team as an owner        so it passes this same owner to the new SA.
    var oOwnerObject = new Object();
    oOwnerObject.type = oTempSA.attributes["ownerid"].entityType;
    oOwnerObject.value = oTempSA.attributes["ownerid"].id;
    oSA.attributes["ownerid"] = oOwnerObject;

}


//GET DEFAULT RESOURCE

var szDefaultResourceFetchXml = "<fetch mapping='logical'>" +
                    "<entity name='equipment'>" +
                    "<attribute name='name' />" +
                    "<attribute name='equipmentid' />" +
                    "<filter>" +
                        "<condition attribute='name' operator='eq' value='Default' />" +
                    "</filter>" +
                    "</entity>" +
                "</fetch>";
var szDefaultResourceFetchResults = CrmServiceToolkit.Fetch(szDefaultResourceFetchXml);
if (szDefaultResourceFetchResults.length > 0) {

    //THIS IS WHERE THE OTHER ERROR APPEARS IF OWNER CODE IS COMMENTED.
    var oActivityParty = new Object();
    oActivityParty.partyid = new Object();
    oActivityParty.partyid.type = "equipment";
    //oActivityParty.partyid.typecode = "4000";        
    oActivityParty.partyid.value = szDefaultResourceFetchResults[0].getValue('equipmentid');

    var oActivityPartyList = new Array();
    oActivityPartyList[0] = new Object();
    oActivityPartyList[0].activityparty = oActivityParty;

    oSA.attributes["resources"] = oActivityPartyList;

}

//GET DEFAULT STATUS
var szDefaulStatusFetchXml = "";
if (oSA.attributes["rst_account"] != null || oSA.attributes["rst_account"] != null) {
    szDefaulStatusFetchXml = "<fetch mapping='logical'>" +
                            "<entity name='rst_serviceactivitystatus'>" +
                                "<attribute name='rst_statusname' />" +
                                "<attribute name='rst_serviceactivitystatusid' />" +
                                "<filter type='or'>" +
                                    "<condition attribute='rst_code' operator='eq' value='" + rst_Global_Constants.SERVICEACTIVITYSTATUS_CODE_ASSIGNED() + "' />" +
                                "</filter>" +
                            "</entity>" +
                        "</fetch>";
}

szDefaulStatusFetchXmlResults = CrmServiceToolkit.Fetch(szDefaulStatusFetchXml);
if (szDefaulStatusFetchXmlResults.length > 0) {
    oSA.attributes["rst_serviceactivitystatusid"] = szDefaulStatusFetchXmlResults[0].getValue('rst_serviceactivitystatusid');
    oSA.attributes["rst_statuschangedatetime"] = new Date();
}

if (aiIsSavingMode == rst_Global_Constants.FORM_SAVEMODE_SAVE()) {
    //SAVE                     
    var createResponse = XrmServiceToolkit.Soap.Create(oSA);
}

}

最佳答案

对于这个问题,我花了一段时间才弄清楚,但最终我明白了。我犯的错误是假设我的错误是从 CRM 2011 UR 11 升级到 UR 12 造成的。我认为我的问题是在应用程序和系统方面安装 UR 时认为我在某个地方搞砸了或者是少了一步。遗憾的是,我最初没有考虑到将 CRMServiceToolkit 更改为 XrmServiceToolkit 所带来的技术细节。

我花了一些时间才注意到这一点,并在新的测试服务器上完整安装了 CRM 2011 才找到答案。在此安装中,我在 UR 11 中测试了我的解决方案,没有对系统进行任何其他更改,系统运行完美,然后升级到 UR 12,没有任何其他可能影响系统的变量。当我进行升级并开始注意到同样的错误时,我知道安装不是问题,而是其他问题。

使用 Fiddler2 和 google 搜索进行各种调试步骤后,终于意识到我的问题在于我在 Javascript 中设置字段的方式,这些字段随后由 XrmServiceToolkit 库序列化,然后发送到 CRM。在从旧的 CRMServiceToolkit 方式正确更改我的 javascript 后,我​​能够缓慢但肯定地修复我的所有代码,以便创建服务事件而不会出现任何问题。

实体引用示例,

var oOwnerObject = new Object();
oOwnerObject.type = oTempSA.attributes["ownerid"].entityType;
oOwnerObject.value = oTempSA.attributes["ownerid"].id;
oSA.attributes["ownerid"] = oOwnerObject;

更改为

    oSA.attributes["ownerid"] = {
        id: oTempSA.attributes["ownerid"].id,
        logicalName: oTempSA.attributes["ownerid"].entityType,
        type: 'EntityReference'
    };

其中逻辑名称类型必须正确设置。

另一个例子,对于我必须使用的事件派对

    //Create new Array with EntityCollection Type
    var partylist = new Array();
    partylist.type = 'EntityCollection';
    //Create object in array to define what in the partylist. 
    partylist[0] = new Object();
    partylist[0].id = szDefaultResourceFetchResults[0].getValue('equipmentid'); //Guid (i.e., Guid of User or Contact etc)
    partylist[0].name = szDefaultResourceFetchResults[0].getValue('name'); //Name (i.e., Name of User or Contact etc)
    partylist[0].logicalName = "equipment"; //entity schema name of account or contact
    //Assign Value
    oSA.attributes["resources"] = partylist;

按照这些示例,我修复了 Javascript 上的其余问题,并且能够成功运行我的代码。

关于javascript - 尝试在 CRM 2011 UR 12 中使用 XRMServiceToolkit 反序列化消息时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25169143/

相关文章:

php - 如何最好地处理重复日历事件的异常

javascript - 如何衡量单页应用程序中的客户端性能

c# - 将嵌套在动态对象中的 C# 列表中的第一项和最后一项序列化为 JSON

javascript - d3 v4 圆环图具有与小值重叠的文本和折线

javascript - 搜索对象数组以匹配来自 mongodb 的 objectId

javascript - 如何从 Geoserver 中发布的图层生成 <a> 列表?

JavaScript 代码技巧 : What's the value of foo. x

MySQL 性能和变量调整

java - Eclipse中的serialVersionUID生成是否使用serialver?

wcf - 是否可以在 WCF 中没有无参数构造函数的情况下序列化对象?