Hi,
I am developing WCF services in .net 3.5 framework and hosting them in IIS 5.1 windows xp sp3 with basicHttpBiding.
Services consuming client developed in .net 2.0 framework. For this I generated proxy client using WSDL.EXE. This tool generates proxy class without any problem, but the problem it adds for every property adds extra property "[property]Specified", but that work fine without any problem, only need to specify "specified = true" when assigning value to any property
To remove this extra property I added XmlSerializerFormat attribe along with ServiceContract attribute. WSDL.EXE generates the class without extra property, but it excludes some class which are included previously.
Is there any properties that I need to set to generate the excluded classes?
Note: All contract classes are attributed with DataContract and properties with DataMemeber.
Thanks
nRk
views:
535answers:
2The standard WCF DataContractSerializer will serialize everything marked with [DataMember] - regardless of the .NET visibility (public/protected/private/internal).
When you switch to the XmlSerializerFormat, the behavior changes - now the XmlSerializer will serialize everything that has a public visibility, and does not have a [XmlIgnore] marked on it.
I would assume some of your classes and members are not marked with public and thus don't get serialized anymore. Also the XmlSerializer requires classes to have an explicit, parameter-less constructor which will be used in deserialization - do all your classes have that? And of course, that constructor also needs to be public.
XmlSerializer uses XmlIncludeAttribute instead of KnownTypeAttribute to discover child types that are not included in operation contracts. So you might try adding them to the base class:
[XmlInclude(typeof(ChildClass1))]
[XmlInclude(typeof(ChildClass2))]
public class BaseClass {}