«Ресурс MultipleIdDefinition не найден» при десериализации в Windows Phone 7 - PullRequest
0 голосов
/ 19 февраля 2011

Я внезапно начал получать это из моего приложения для Windows Phone 7.Я не знаю, что изменилось в данных десериализации, которые могли бы вызвать это.Есть идеи, что это значит?

System.Runtime.Serialization.SerializationException occurred
  Message=The resource MultipleIdDefinition was not found in System.Runtime.Serialization
  StackTrace:
       at System.Runtime.Serialization.ReferencedObjectCache.Add(String id, Object referencedObject)
       at System.Runtime.Serialization.XmlObjectSerializerReadContext.AddNewObjectWithId(String id, Object obj, Boolean isReference)
       at System.Runtime.Serialization.XmlObjectSerializerReadContext.AddNewObject(Object obj, Boolean isReference)
       at System.Runtime.Serialization.XmlFormatReader.InvokeBeforeDeserialization(ClassDataContract classContract, XmlObjectSerializerReadContext context)
       at System.Runtime.Serialization.XmlFormatReader.InitializeCallStack(DataContract clContract, XmlReaderDelegator xmlReaderDelegator, XmlObjectSerializerReadContext xmlObjContext, XmlDictionaryString[] memberNamesColl, XmlDictionaryString[] memberNamespacesColl)
       at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
       at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader)
       at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract)
       at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
       at System.Runtime.Serialization.XmlFormatReader.InternalDeserialize(Object value, Type type, String name, String ns, XmlObjectSerializerReadContext context, XmlReaderDelegator xmlReader)
       at System.Runtime.Serialization.XmlFormatReader.ReadValue(Type type, String name, String ns, XmlObjectSerializerReadContext context, XmlReaderDelegator xmlReader)
       at System.Runtime.Serialization.XmlFormatReader.ReadCollectionItem(CollectionDataContract collectionContract, Type itemType, String itemName, String itemNs, XmlObjectSerializerReadContext context, XmlReaderDelegator xmlReader)
       at System.Runtime.Serialization.XmlFormatReader.ReadCollectionItems(DeserializedObject desObj, CollectionDataContract collectionContract, Int32 membersRead, Int32 size)
       at System.Runtime.Serialization.XmlFormatReader.ReadCollection(DeserializedObject desObj, CollectionDataContract collectionContract, Int32 membersRead)
       at System.Runtime.Serialization.XmlFormatReader.Deserialize(XmlObjectSerializerReadContext context)
       at System.Runtime.Serialization.XmlFormatReader.InitializeCallStack(DataContract clContract, XmlReaderDelegator xmlReaderDelegator, XmlObjectSerializerReadContext xmlObjContext, XmlDictionaryString[] memberNamesColl, XmlDictionaryString[] memberNamespacesColl)
       at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
       at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader)
       at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, 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)
       at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName)
       at System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlDictionaryReader reader)
       at ...
       at Microsoft.Phone.Shell.PhoneApplicationService.FireLaunching()
       at Microsoft.Phone.Execution.NativeEmInterop.FireOnLaunching()

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

Если вы работаете с WCF, это может быть вызвано добавлением «IsReference = true» DataContract на стороне сервера.В реальной полезной нагрузке это будет выглядеть примерно так: z: Id = ”i7”.

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

0 голосов
/ 20 февраля 2011

Если вы сознательно не десериализуете какой-либо XML, тогда я могу только угадать , что либо:

  • изолированное хранилище приложения содержит XML-код состояния приложения (например, из AppSettings)
  • или проблема в XML-файле конфигурации вашего приложения

Чтобы попытаться это исправить, вы можете:

  1. Посмотрите в папке Properties вашего проекта - там есть файлы конфигурации XML, все в порядке? Если вы открываете их в редакторе, отображаются ли какие-либо предупреждения или ошибки?
  2. Удалите приложение с эмулятора и / или с телефона (можно даже попробовать перезапустить эмулятор или выполнить сброс настроек телефона до заводских настроек)

Если нет, опубликуйте больше информации, и мы постараемся помочь больше - интересная проблема!

...