Базовый тип .NET не может быть сериализован с помощью WCF

Я пишу службу WCF и хочу предоставить некоторые настраиваемые элементы конфигурации (например, Custom ConfigurationSection и ConnectionStringSettings), чтобы я мог изменить конфигурацию службы.

Один из моих настраиваемых элементов конфигурации наследуется от System.Configuration.ConfigurationElementCollection. Когда я пытаюсь запустить службу WCF, я получаю следующее сообщение об ошибке ...

Тип "System.Configuration.ConfigurationElementCollection" не может быть сериализован. Подумайте о том, чтобы пометить его атрибутом DataContractAttribute и пометить все его члены, которые вы хотите сериализовать, с помощью атрибута DataMemberAttribute.

Есть ли способ реализовать DataContract для этого типа? У меня есть унаследованный класс, отмеченный атрибутом [DataContract].


person vradenburg    schedule 30.10.2008    source источник


Ответы (2)


Просто коснитесь этого вопроса сегодня. Это сбивало с толку, потому что проблема заключалась в переносе проекта с машины на машину. Эта статья кажется актуальной:

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

Подводя итог в случае гниения ссылок, проблема, похоже, возникает во время выполнения 3.5 и исчезает во время выполнения 3.5 SP1.

person quillbreaker    schedule 04.03.2010
comment
У меня было то же самое. Вам понадобится 3.5 SP1 для автоматической сериализации типов POCO. - person Michal Sznajder; 25.08.2010

Хорошо, в конце концов мне пришлось переделать свое решение. Я нашел SerializableConfigurationSection наиболее полезным. Это в шаблонах и практиках EnterpriseLibrary. Поэтому вместо того, чтобы пытаться передать свои настраиваемые разделы конфигурации через WCF, я выполняю сериализацию / десериализацию вручную и передаю разделы конфигурации через WCF в виде строки.

person vradenburg    schedule 31.10.2008