views:

135

answers:

2

I'm using a Serializable Dictionary code object. For some reason when I serialize the object in a SOAP web service the the string object serializes with a blank namespace. I cannot get it to go away.:

 XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));

        foreach (TKey key in this.Keys)
        {
            writer.WriteStartElement("item");

            writer.WriteStartElement("key");
            keySerializer.Serialize(writer, key);
            writer.WriteEndElement();

            writer.WriteStartElement("value");
            TValue value = this[key];
            valueSerializer.Serialize(writer, value, ns);
            writer.WriteEndElement();

            writer.WriteEndElement();
        }

I've tried using the XmlSerializerNamespaces on the XmlSerializer as well as the XmlAttributeOverrides but I cannot get it to go away. I keep getting

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
 <soap:Body>
  <GetSiteListPermissionsResponse xmlns="http://HDMenu"&gt;
   <GetSiteListPermissionsResult>
    <item>
     <key>
      <string xmlns="">http://devvm.local/second3/default.aspx&lt;/string&gt;
     </key>
     <value>
      <string xmlns="">True</string>
     </value>
    </item>
   </GetSiteListPermissionsResult>
  </GetSiteListPermissionsResponse>
 </soap:Body>
</soap:Envelope>
+2  A: 

Using the XmlSerializer constructor that expects a default namespace might fix the problem.

Martin v. Löwis
A: 

Use the WriteStartElement(String, String) overload.

John Saunders