views:

3120

answers:

3

I'm writing a WCF service and want to expose some custom configuration elements (e.g. Custom ConfigurationSection and ConnectionStringSettings) so that I can modify the service's configuration. One of my custom configuration elements inherits from System.Configuration.ConfigurationElementCollection. When I try to start my WCF service I get the following error message...

Type 'System.Configuration.ConfigurationElementCollection' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. See the Microsoft .NET Framework documentation for other supported types.

Is there a way to implement the DataContract for this Type? I have my inherited class marked with the [DataContract] attribute.

Please help.

David

+1  A: 

Ok, well in the end I had to re-architect my solution. I found the SerializableConfigurationSection most beneficial. It's in the patterns and practices EnterpriseLibrary. So rather than trying to pass my Custom Configuration Sections through WCF, I perform the seralization/deserialization manually and pass the configuration sections through WCF as a string.

vradenburg
+2  A: 

Just hit this issue today. It was confusing because the problem came up moving a project from machine to machine. This article seems relevant:

http://blogs.msdn.com/youssefm/archive/2009/08/10/serializing-plain-old-clr-objects-poco-types-with-datacontractserializer.aspx

To summarize in case of link rot, the issue seems to emerge in runtime 3.5 and go away in runtime 3.5 SP1.

quillbreaker
I had the same. You need 3.5 SP1 for auto serializing of POCO types.
Michal Sznajder
A: 

Thanks a lot! .NET 3.5sp1 works

raj