Üretilen WCF web hizmeti proxy kodunu svcutil'den seri hale getirmeye/kaldırmaya çalışıyorum. Nesneleri serileştirirken, onları tekrar nesnelere dönüştürebiliyorum. Bir kaç soru varÜretilen WCF proxy kodunu serileştirme/seri hale getirme nasıl yapılır?
<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>
:
Zaten oluşturulan vekil kodunda belirtilen ad eşleşecek ad bildirmek için XmlSerializerNamespaces kullanıyorum İşte serileştirme yoluyla oluşturulan XML var. Nasıl oluyor da "SomeObject" etiketine eklenmiş bir "p4" etiketi ve yeni bir xml ad alanı eklendi (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(); }
Aşağıdaki kod ile XML serisini çalıştığınızda, aşağıdaki hatayı alıyorum: "iletisi:. XML belgesi oluşturma hata oluştu System.Xml.XmlException --->: 'p4: type' yinelenen bir özellik adıdır. '
using (TextReader textReader = new StringReader(xmlString)) { using (XmlReader xmlReader = XmlReader.Create(textReader)) { XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace); return (T)serializer.Deserialize(xmlReader); } }
vekil kodu bir WCF web hizmeti ile iletişim kurmak için Svcutil tarafından oluşturulur. Sadece web servis çağrısını kullandığımda oluşturulan tüm nesneler düzgün seri hale getirilmiş/serileştirilmiştir.
Daha önce benzer sorunları olan oldu mu?