Groups | Blog | Home
all groups > asp.net webservices > september 2004 >

asp.net webservices : SoapIgnore attribute ignored.



Benjamin Day
9/8/2004 4:51:05 PM
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
{
}
}
}
}


--
Benjamin Day
9/8/2004 7:39:05 PM
Thanks. That was exactly what I needed.

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

-Ben

[quoted text, click to view]
Tomas Restrepo (MVP)
9/8/2004 8:56:44 PM
Benjamin,

[quoted text, click to view]

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.

--
Tomas Restrepo
tomasr@mvps.org

AddThis Social Bookmark Button