2010-09-08 26 views
5

Ü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> 

:

  1. 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(); 
        } 
    
  2. 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); 
         } 
        } 
    
  3. 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?

cevap

4

WCF, XML'yi standart XmlSerializer'dan farklı şekilde üretecek nesneleri serileştirmek için özel XML serileştiricileri kullanır. XmlSerializer'ı kullanabilirsiniz, ancak sınıfınızı objectToBeSerialized nesnesi için doğru şekilde ilişkilendirmeniz gerekecek. Bunun yerine WCF serileştiricilerini kullanmak daha iyidir.

http://msdn.microsoft.com/en-us/magazine/cc163569.aspx

:

bu makalede bir göz atın

İlgili konular