Je développe des services WCF dans le cadre NET 3.5 et les fenêtres d'hébergement dans IIS 5.1 xp sp3 avec basicHttpBiding.
Services consommant le client développé dans .net 2.0 framework. Pour cela, j'ai généré un client proxy en utilisant WSDL.EXE. Cet outil génère une classe proxy sans aucun problème, mais le problème qu'il ajoute pour chaque propriété ajoute une propriété supplémentaire "[propriété] Spécifié", mais cela fonctionne correctement sans problème, seulement besoin de spécifier "specified = true" lors de l'affectation valeur à toute propriété
Pour supprimer cette propriété supplémentaire, j'ai ajouté XmlSerializerFormat attribué avec l'attribut ServiceContract. WSDL.EXE génère la classe sans propriété supplémentaire, mais elle exclut certaines classes qui sont incluses précédemment.
Y a-t-il des propriétés que je dois définir pour générer les classes exclues?
Remarque: Toutes les classes de contrat sont attribuées avec DataContract et les propriétés avec DataMemeber.
NRKWCF client proxy généré avec wsdl ne correspondant pas à ServiceContract, XmlSerializerFormat attribue
Répondre
XmlSerializer utilise XmlIncludeAttribute au lieu de KnownTypeAttribute
pour découvrir les types enfants qui ne sont pas inclus dans les contrats d'exploitation. Vous pouvez donc essayer de les ajouter à la classe de base:
La norme WCF DataContractSerializer sérialise tout marqué par [DataMember]
- quelle que soit la visibilité .NET (public/protégé/privé/interne). Lorsque vous passez à XmlSerializerFormat, le comportement change: désormais, XmlSerializer sérialise tout ce qui a une visibilité public
et ne porte pas de [XmlIgnore]
marqué dessus.
Je suppose que certaines de vos classes et membres ne sont pas marqués public
et ne sont plus numérotés. Le XmlSerializer requiert également que les classes aient un constructeur explicite, sans paramètre, qui sera utilisé dans la désérialisation - toutes vos classes ont-elles cela? Et bien sûr, ce constructeur doit également être public
.
Merci Marc, Comme vous l'avez indiqué, toutes les propriétés ont un constructeur public et un constructeur par défaut. Le problème vient, où j'ai besoin de retourner à une méthode est la classe de base, qui est héritée par 8 classes enfants, mais je reçois en proxy seulement 4 classes. Toutes les classes héritées ont un constructeur public/par défaut et toutes les propriétés sont publiques. Toutes les classes sont décorées avec DataContract et les propriétés avec DataMember attrigute. – nRk
Les attributs DataContract/DataMember importent peu ici si vous utilisez XmlSerializer. Toutes vos 8 classes enfants sont-elles définies quelque part dans un attribut [KnownType] sur un contrat d'opération? Je pense que seuls ceux qui sont mentionnés spécifiquement soit comme un paramètre dans une opération, ou au moyen de l'attribut de type connu, seront sérialisés –
Merci pour l'aide. Désolé, j'ai oublié de mentionner que, dans la classe de base j'ai ajouté l'attribut [KnownType (typeof (childclass))], j'ai ajouté 8 attributs pour chaque classe enfant. – nRk
- 1. Proxy WCF généré à partir de WSDL, la méthode proxy renvoie la valeur null
- 2. WSDL généré automatiquement par WCF
- 3. Ajout de méthodes au code de proxy client WCF généré
- 4. WCF généré proxy ne contient pas * drapeaux de propriété spécifiés pour les champs de chaîne WSDL avec minOccurs = « 0 »
- 5. wcf client via proxy
- 6. Problème avec WSDL généré à partir du contrat de service générique dans VS 2008
- 7. WSDL premier serveur WCF où le client n'envoie pas SOAPAction
- 8. Proxy client WCF pour client ASP .NET
- 9. étrange côté client WCF app.config généré
- 10. Zend_Soap_Client ne fonctionne pas avec proxy
- 11. wcf Extrait wsdl du service WCF avec WSDL aplati
- 12. client wsdl avec Qt
- 13. Upcasting ServiceContract
- 14. connexion avec le client WCF
- 15. WCF Classes proxy supplémentaires
- 16. Comment appeler les méthodes wcf à partir du proxy client
- 17. Accès simultané au proxy client WCF
- 18. Méthodes proxy WSDL C#
- 19. La méthode Abort() du proxy client wcf ne libère pas la session après avoir intercepté FaultException
- 20. WCF utilise l'objet domaine original au lieu du proxy généré
- 21. Comment créer une classe proxy WCF donné wsdl fichier
- 22. WSDL Problème client avec PHP
- 23. Comment sérialiser/désérialiser le code proxy WCF généré?
- 24. Traitement du proxy WCF Proxy null Retour
- 25. WSDL from WCF Édition
- 26. Webservice WCF derrière un proxy inverse public
- 27. Solutions pour le proxy client WCF dynamique dans Silverlight?
- 28. Client Spring-ws de WSDL
- 29. Adresse de localisation WCF WSDL avec HTTPS
- 30. Problème avec l'appel unidirectionnel du client WCF
Merci Darin, je l'ai fait comme tu l'as spécifié, ça marche. :) – nRk