6

J'écris un service WCF et je souhaite exposer certains éléments de configuration personnalisés (par exemple, ConfigurationSection personnalisée et ConnectionStringSettings) afin de pouvoir modifier la configuration du service.Le type de base .NET ne peut pas être sérialisé par WCF

L'un de mes éléments de configuration personnalisés hérite de System.Configuration.ConfigurationElementCollection. Lorsque je tente de démarrer mon service WCF je reçois le message d'erreur suivant ...

Type « System.Configuration.ConfigurationElementCollection » ne peut pas être publié en feuilleton. Pensez à le marquer avec l'attribut DataContractAttribute et à marquer tous les membres que vous souhaitez sérialiser avec l'attribut DataMemberAttribute.

Existe-t-il un moyen d'implémenter le DataContract pour ce type? J'ai ma classe héritée marquée avec l'attribut [DataContract].

Répondre

1

Ok, bien à la fin j'ai dû ré-architecturer ma solution. J'ai trouvé la section SerializableConfigurationSection la plus avantageuse. C'est dans les modèles et les pratiques EnterpriseLibrary. Ainsi, plutôt que d'essayer de passer mes sections de configuration personnalisées via WCF, j'effectue la sérialisation/désérialisation manuellement et passe les sections de configuration via WCF sous la forme d'une chaîne.

4

Vous venez de rencontrer ce problème aujourd'hui. C'était déroutant parce que le problème est venu en déplaçant un projet de la machine à la machine. Cet article semble pertinent:

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

En résumé, en cas de pourriture du lien, la question semble émerger dans l'exécution 3.5 et aller dans l'exécution 3.5 SP1.

+0

J'avais les mêmes. Vous avez besoin de 3.5 SP1 pour la sérialisation automatique des types POCO. –

Questions connexes