Erreur lors de la désérialisation de l'objet dans WCF
J'ai créé un Service REST dans WCF. Je suis confronté au problème suivant
Il y a une erreur de la désérialisation d'un objet de type System.Les Collections.Génériques.IList. La lecture maximale en profondeur (32) a été dépassé en raison de données XML en cours de lecture a plus de niveaux d'imbrication que ce qui est permis par le quota. Ce quota peut être augmenté par la modification de la MaxDepth bien sur la XmlDictionaryReaderQuotas objet utilisé lors de la création du lecteur XML.
Je n'ai pas précisé de quelle type de liaison dans la configuration depuis que j'ai mis au point le service que par le REPOS de Kit de Démarreur. S'il vous plaît suggérer quelque chose comme comment puis-je corriger cela.
Le code fonctionne bien parfois, mais il ne jeter erreur.
OriginalL'auteur Anil C | 2011-04-04
Vous devez vous connecter pour publier un commentaire.
Dans mon cas, le problème était que j'étais de retour Entity Framework objets que j'ai obtenu à partir des données de contexte. La solution a été de détacher chaque objet avant de le réaccorder.
OriginalL'auteur Adi
Dans mon cas, le détachement des objets n'a pas été possible parce que le contexte EF a déjà été éliminés.
Au lieu de cela, j'ai utilisé le
AsNotTracking
méthode d'extension....Sur certains autres cas, j'ai aussi dû couper les références circulaires en définissant certaines propriétés de navigation null.
...Et
DataContract ('IsReference = true)
ne pas faire l'affaire.Plus de détails sur cette question peut être trouvée ici : N-tier Entity Framework et le débogage des problèmes WCF
OriginalL'auteur Dude Pascalou
RESTE Starter Kit n'est plus supporté et ASP.NET Web API ou de toute autre mise à jour de REPOS cadre devrait être utilisé à la place.
OriginalL'auteur ChristofSenn
J'ai eu le même problème aujourd'hui. Il pourrait être une référence circulaire si vous n'avez pas défini correctement la KnowType et le ' IsReference dans votre contrat de données. Vérifier ces points en premier. Vraiment !
Mais quand vous êtes confrontés à ce genre de comportement.
Le code fonctionne bien parfois, mais il ne jeter erreur.
Vous devriez également vérifier si le graphique de votre envoi sur le fil est profond et complexe (comme plus de deux propriétés de navigation de profondeur). Ensuite, il pourrait juste être le MaxDepth de la ReaderQuotas dans votre configuration de liaison qui est trop faible. Votre service de travaux lorsque le plus profond de votre navigation propriétés sont vides, mais serait de se débarrasser de cette erreur quand ils contient au moins un élément.
Valeur par défaut de cette configuration est de 32, afin de lui donner un essai à 64 ans.
Maintenant, nous pouvons argumenter au sujet de la mauvaise qualité de conception de l'utilisation de trop profonde graphique sur le service par rapport à la faible valeur par défaut dans la Configuration WCF.
Je ne dis pas que vous devez sortir de votre graphique dans la partie plus petite, mais vous devriez.
OriginalL'auteur Marco Guignard