SoapIgnore attribute ignored.

B

Benjamin Day

I'm passing classes through a web service. There are some properties on the
class that I don't need to be serialized and would like to remove them for
performance (size) reasons so I've marked them with the
System.Xml.Serialization.SoapIgnore attribute.

I recompiled and checked what was being sent over the wire. The ignored
property is still showing up in the xml serialization!

I've attached some sample code that uses XmlSerializer and I get the same
behavior as thru the web service. (which, I suppose should make a lot of
sense)

Any ideas?

Thanks,
-Ben


// test method
private void DoSerialize()
{
TestClass temp=new TestClass();

XmlSerializer serializer=new XmlSerializer(typeof(TestClass));

StringBuilder sb=new StringBuilder();

StringWriter stream=new StringWriter(sb);

serializer.Serialize(stream, temp);

MessageBox.Show(sb.ToString());
}

// class to be serialized
using System;
using System.Xml.Serialization;

namespace SoapIgnoreTest
{
/// <summary>
/// Summary description for TestClass.
/// </summary>
public class TestClass
{
public TestClass()
{
}

public string NotIgnored
{
get
{
return "NotIgnored";
}
set
{
}
}

[SoapIgnore]
public string Ignored
{
get
{
return "Ignored";
}
set
{
}
}
}
}
 
T

Tomas Restrepo \(MVP\)

Benjamin,
I'm passing classes through a web service. There are some properties on the
class that I don't need to be serialized and would like to remove them for
performance (size) reasons so I've marked them with the
System.Xml.Serialization.SoapIgnore attribute.

I recompiled and checked what was being sent over the wire. The ignored
property is still showing up in the xml serialization!

SoapIgnoreAttribute is only taken into account if you're using SOAP RPC
encoding, which it seems you're not using. For literal encoding (which is
the default), use [XmlIgnore] instead.
 
B

Benjamin Day

Thanks. That was exactly what I needed.

I was hoping for a sec that I'd found a bug in the serialization namespace.
:)

-Ben

Tomas Restrepo (MVP) said:
Benjamin,
I'm passing classes through a web service. There are some properties on the
class that I don't need to be serialized and would like to remove them for
performance (size) reasons so I've marked them with the
System.Xml.Serialization.SoapIgnore attribute.

I recompiled and checked what was being sent over the wire. The ignored
property is still showing up in the xml serialization!

SoapIgnoreAttribute is only taken into account if you're using SOAP RPC
encoding, which it seems you're not using. For literal encoding (which is
the default), use [XmlIgnore] instead.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,825
Latest member
VernonQuy6

Latest Threads

Top