Comment créer WCF Utilisez XS: tous au lieu de XS: séquence lorsqu'il définit des types d'objet complexes dans le WSDL / XSD pour un service Web? P>
Le problème que j'aurai est que XS: la séquence nécessite que les applications d'appelage transmettent les éléments du message SOAP dans l'ordre spécifié dans XSD généré par WCF (ceci est alphabétique par défaut). XS: tout (ou le choix de cette affaire) ne se soucie pas de la commande. P>
Ce comportement peut-il être modifié simplement via une option de configuration quelque part? P>
3 Réponses :
du haut de ma tête, je pense que vous ne pouvez pas. Ce que vous pouvez faire à la place, c'est écrire le fichier WSDL à la main, puis utiliser svcoktil.exe pour générer le code. P>
Si tout ce que vous voulez faire, c'est des éléments de commande dans une commande différente de celle par ordre alphabétique, vous pouvez commander les éléments dans le Datacontract, à l'aide de la commande (à partir de 1, pas 0 de matrices similaires) sur l'attribut [Datamember] ([ Datamember (commande = 1)], [Datamember (commande = 2)], etc.). P>
+1 Vous avez cloué sur la tête - il n'y a aucun moyen de sortir de la boîte pour instruire WCF d'utiliser XS: tous au lieu de XS: séquence
Pour une fois que j'ai le temps de répondre à une question de la WCF plus rapidement que vous ne le faites :)
Merci, je pensais que cela aurait pu être le cas.
Vous pouvez changer de wcf pour utiliser le XMLSerializer au lieu de DatacontractSerializer. Le XMLSerializer prend en charge XS: tous. Voir http://msdn.microsoft.com/en-us/library/ms733901 .aspx p>
Même si vous pouviez forcer la WCF à le faire, le désérialiseur ne fonctionnerait pas correctement pour soutenir l'entrée. Exemples et explications ci-dessous.
entrée 1 (bon): p> entrée 2 (mauvais): p> <MyOperation>
<bogusField>with or without data</bogusField>
<AField>value A</AField>
<bogusField2 />
<BField>value B</BField>
<bogusField3></bogusField3>
</MyOperation>
Vous pouvez écrire votre propre extension pour créer le WSDL si vous voulez vraiment - ce n'est pas totalement trivial, mais cela peut être fait. Recherchez sur le Web pour "WCF WSDL Extension" - il devrait y avoir plusieurs échantillons là-bas
Est-ce que cela répond à votre question? Validation XML avec XSD : Comment éviter de se soucier de la séquence des éléments?