J'ai une classe que je dois être capable de sérialiser avec une variable de session SQLServer et d'être disponible sur un service WCF. Je l'ai dit comme suit mais lorsque j'essaie d'appeler ce service, je reçois l'erreur suivante dans le journal de trace. P> "System.Runtime.Serialization.InvalidDatacontractException:
Taper
'BarproxyBCB100E8617F40CEAA832FE4BB94533C'
ne peut pas être isérialisable et avoir
Attribut DatacontractAttribute. " P>
BlockQuote> Si je sortez l'attribut Serializable, le service WCF fonctionne, mais lorsque l'objet ne peut pas être sérialisé à la session. Si je supprimais l'attribut Datacontract de la barre de classe, le service WCF échoue à dire P> type
'Barproxy3bb05a31167f4ba492909ec941A54533'
avec nom de contrat de données
'Barproxy3bb05a31167f4ba492909ec941A54533: http://schemas.datacontract.org/2004/07/ '
n'est pas attendu. Ajouter des types non
connu statiquement à la liste de connue
Types - Par exemple, en utilisant le
Attribut connu detypeattribute ou par
les ajoutant à la liste des types connus
passé à DatacontractSerializer P>
blockQuote> J'ai essayé d'ajouter un attribut connu de la classe FOO P> mais j'ai toujours la même erreur. p> peut Quelqu'un m'aida-t-il avec ça? P> Merci beaucoup P> Dave P> P>
3 Réponses :
Cette question sur MSDN pourrait aider: Datacontract contre Serializable . P>
La réponse acceptée de ce fil: p>
[Datacontract] code> et
[Serializable] code> peut être utilisé ensemble. P> LI>
DatacontractSérialiseur comprend les deux. Si le type est marqué avec les deux, il prendra la projection de
[DataContract] code> p> li>
Voici les documents sur le transfert de données et la sérialisation dans WCF qui fournissent beaucoup de détails sur les sérialiseurs et le type connu: Transfert de données et sérialisation P> LI> ol> blockQuote>
Merci - à la fin, ce que j'ai fait était de faire des copies de mes cours et de les revenir à travers le service.
serait bien d'avoir la réponse réelle ici, plutôt que d'un lien car les forums sont actuellement en panne pour la maintenance ...
@Maxschilling: Vous avez raison - avoir juste un lien sans résumé, c'est une mauvaise pratique (j'ai appris depuis que j'ai posté cette réponse). Je vais le résoudre une fois que les forums sont en place.
Cette réponse est fausse ou mal formulée. [DataContract] et [sérialisable] ne peuvent pas être utilisés ensemble. Vous pouvez utiliser avec DatacontractSerializer, soit en appliquant les deux attributs ne fonctionnera pas.
J'ai rencontré ce même problème avec la sérialisation pour le cadre d'entité Pocos sur la WCF. Rien ne fonctionnait et j'étais sur le point d'abandonner quand j'ai essayé de supprimer les étiquettes virtuelles des membres. Tout d'un coup, il a commencé à travailler. Donnez cela un essai. P>
Je sais que cela est très tard, mais au cas où quelqu'un le lit, nous avions un problème similaire. Notre solution pour quitter le Datacontract telle que la WCF Serialized Fine, puis lorsque nous soions sérialisés à la session SQL Server, nous avons sérialisé l'objet à JSON et l'a écrit à la session. P>