Ich versuche, generierten WCF-Web-Service-Proxy-Code von SVCutil zu serialisieren/deserialisieren. Während ich die Objekte serialisieren kann, kann ich sie nicht zu Objekten deserialisieren. Hier ist der XML-I durch Serialisierung erzeugt:Wie serialisieren/deserialisieren Sie generierten WCF-Proxy-Code?
<RootObject xmlns="http://schemas.myco.com/online/sync/2008/11">
<WrapperObject>
<Objects>
<SomeObject p4:type="Foo" ContextId="d5f9f021-b2a1-47ba-9f25-1e068194dc87" ObjectId="fad3ef87-3944-459d-b45b-1e4e52ef24db" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.myco.com/online/sync/2008/11" />
</Objects>
</WrapperObject>
</RootObject>
ich ein paar Fragen:
Ich bin schon XmlSerializerNamespaces mit dem Namespace deklarieren den Namespace in der generierten Proxy-Code angegeben übereinstimmen. Wie kommt es, dass es noch ein "p4" -Tag gibt, dass es zum "SomeObject" -Tag hinzugefügt und einen neuen XML-Namespace hinzugefügt hat (xmlns: p4 = "http://www.w3.org/2001/XMLSchema-instance").
using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings)) { XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(); namespaces.Add(string.Empty, defaultNamespace); XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace); serializer.Serialize(xmlWriter, objectToBeSerialized, namespaces); return stringBuilder.ToString(); }
Wenn ich versuche, die XML mit dem folgenden Code zu deserialisieren, bekomme ich folgende Fehlermeldung: „System.InvalidOperationException:. Es gab einen Fehler das XML-Dokument zu erzeugen ---> System.Xml.XmlException: 'p4: type' ist ein doppelter Attributname. "
using (TextReader textReader = new StringReader(xmlString)) { using (XmlReader xmlReader = XmlReader.Create(textReader)) { XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace); return (T)serializer.Deserialize(xmlReader); } }
Der Proxy-Code wird von svcutil erzeugt mit einem WCF-Webdienst zu kommunizieren. Alle generierten Objekte werden ordnungsgemäß serialisiert/deserialisiert, wenn ich nur den Web-Service-Aufruf verwende.
Hat jemand schon ähnliche Probleme gehabt?