2013-12-09 3 views
0

У меня есть этот класс, порожденный от веб-сервиса:пространство имен не генерируется с сериализации

[System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] 
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] 
    [System.ServiceModel.MessageContractAttribute(IsWrapped=false)] 
    public partial class RequestMessage { 

     [System.ServiceModel.MessageBodyMemberAttribute(Namespace="urn:ihe:iti:xds-b:2007", Order=0)] 
     public Helper.RequestType Request; 

     public RequestMessage() { 
     }     
    } 

Я пытаюсь создать XmlDocument с помощью:

var xnameSpace = new XmlSerializerNamespaces(); 
XmlDocument xReq = new XmlDocument(); 

      XmlSerializer serializer = new XmlSerializer(typeof(RequestMessage)); 
      using (MemoryStream memStm = new MemoryStream()) 
      { 
      using (XmlWriter xw = XmlWriter.Create(memStm)) 
      {     
       xnameSpace.Add("", "urn:ihe:iti:xds-b:2007"); 
       serializer.Serialize(xw, oReq, xnameSpace); 
       memStm.Position = 0; 
       xReq.Load(memStm); 
      } 
      } 

Но я не получаю запрошенное пространство имен в сгенерированном XmlDocument «xReq».

В чем проблема?

ответ

2

XmlSerializer не обрабатывает System.ServiceModel атрибуты, он использует System.Xml атрибуты, такие как XmlElementAttribute, XmlRootAttribute и т.д. System.ServiceModel атрибуты используются DataContractSerializer. Вы можете настроить ссылку webservice для использования атрибутов XmlSerializer, если вы предпочитаете это (svcutil.exe /serializer:XmlSerializer).

Смежные вопросы