6

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.

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

p.campbell
  • 98,673
  • 67
  • 256
  • 322
vradenburg
  • 163
  • 1
  • 4
  • 9

2 Answers2

4

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
  • 6,119
  • 3
  • 29
  • 47
1

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
  • 163
  • 1
  • 4
  • 9