Базовый тип.NET не может быть сериализован WCF
Я пишу службу WCF и хочу предоставить некоторые пользовательские элементы конфигурации (например, Custom ConfigurationSection и ConnectionStringSettings), чтобы я мог изменить конфигурацию службы.
Один из моих пользовательских элементов конфигурации наследуется от System.Configuration.ConfigurationElementCollection
, Когда я пытаюсь запустить службу WCF, я получаю следующее сообщение об ошибке...
Тип 'System.Configuration.ConfigurationElementCollection' не может быть сериализован. Попробуйте пометить его атрибутом DataContractAttribute и пометить все его элементы, которые вы хотите сериализовать, атрибутом DataMemberAttribute.
Есть ли способ реализовать DataContract для этого типа? Мой унаследованный класс помечен атрибутом [DataContract].
2 ответа
Просто попал в этот выпуск сегодня. Это сбивало с толку, потому что возникла проблема при переносе проекта с машины на машину. Эта статья кажется актуальной:
Подводя итог, можно сказать, что в случае гниения ссылок проблема возникает во время выполнения 3.5 и исчезает во время выполнения 3.5 SP1.
Хорошо, в конце концов, мне пришлось пересмотреть свое решение. Я нашел SerializableConfigurationSection наиболее полезным. Это в шаблонах и практиках EnterpriseLibrary. Поэтому вместо того, чтобы пытаться передать свои разделы пользовательской конфигурации через WCF, я выполняю разделение / десериализацию вручную и пропускаю разделы конфигурации через WCF в виде строки.