10
votes

Comment faire un kit WebService dotnet WebService minoc est "1" sur une valeur de chaîne

J'ai un XSD: xxx

que j'ai converti en une classe C # à l'aide de xsd.exe v2.0.50727.3615 qui génère le code comme suit xxx < / pré>

Je retourne un objet AA dans mon service Web, qui produit cet extrait dans la description du service xxx

le changement de minoccrus = "1" dans le XSD à minoccurs = "0" sur la WSDL générée automatiquement provoque une douleur à la machine à la machine de l'autre extrémité du système.

Je pouvais bien sûr fournir à la main WSDL édité à la main pour eux à utiliser, mais je voudrais Comme le généré automatiquement pour répondre à leurs besoins.

Toute suggestion sur la manière de convaincre DotNet de produire des minocommuneurs = "1" pour un type de chaîne dans ses WSDLS autogénérés sans également ajouter NillABable = "vrai"? < / p>


1 commentaires

Si vous trébuchez ici dans l'espoir de l'opposé ( minoc-himocs = 0 ) Voir social.msdn.microsoft.com/forums/en-us/... - Vous ajoutez une propriété ignorée [Xmlignore] public bool {{theproperty}} spécifié {obtenir; ensemble; } et le définir lorsque "TheProperty" est défini.


3 Réponses :


1
votes

Selon les réponses à Ce alors question, ce n'est pas possible. John Saunders dit:

Il s'avère que le WSDL n'est pas utilisé pour valider le XML entrant. Ce ne serait pas compte que vous puissiez ou non spécifier des minocommunis - ce ne serait pas utilisé pour valider l'entrée.


1 commentaires

Je n'essaie pas d'utiliser le WSDL pour valider l'entrée, j'essaie de dire que la sortie peut être garantie de la chaîne.



12
votes

Références

Selon msdn minocurs Assistance de liaison d'attributs , il n'y a que de 2 façons d'obtenir minocois = 1 .

  1. Type de valeur sans valeur par défaut ou champ booléen accompagné.

    résultat: La valeur minocurée de l'élément de sortie est définie sur 1

  2. Type de référence avec une propriété islamliable d'attribut XMLElement définie sur true.

    résultat: La valeur minocurée de l'élément de sortie est définie sur 1 . Dans l'élément, l'attribut nilable est également défini sur True.

    une propriété de type chaîne (malheureusement) a toujours une valeur par défaut de xxx

    donc il ne peut jamais avoir un < Strong> NULL Valeur par défaut. Cela signifie que nous ne pouvons jamais satisfaire la première solution. Le seul moyen de générer un minocois = 1 pour les chaînes est de rendre l'élément nullable :

    C # xxx

    vb xxx

    solution

    La seule solution réelle consiste à éditer le XSD manuellement ... BOO XSD.EXE.

    Plus de mauvaises nouvelles

    Même si c'était possible, Nick Devore lié à Réponse de John Sondeur dans un autre fil indiquant que le champ n'est pas utilisé pour les XML entrants. Il est donc toujours possible que l'utilisateur envoie XML non valide.


3 commentaires

Vous n'avez pas besoin de la propriété islamllabable? Qu'est-ce que vous obtenez avec le vrai, ou trop faux?


Dans mon cas, plus de nouvelles nouvelles n'étaient pas une question, car je n'essayais pas de compter sur le cadre pour valider cette partie de la XML, essayant simplement d'empêcher les humains en regardant la WSDL de me séparer de manière constante "pourquoi Est-ce que vos questions sont malamustes "questions.


SIMON - Je suis préoccupé par l'utilisateur final de voir la mauvaise information aussi. Ma seule solution entièrement automatisée consiste à post-traiter le XSD avec un fichier de commandes ou EXE pour corriger les valeurs des minocurs. J'ai mon propre attribut attaché aux propriétés de ma classe afin qu'un EXE puisse la clé de cela. @Johnsaunders - Je ne sais pas si vous demandez de clarifier ma réponse ou si vous proposez une solution. Le terme «islamoullable» dans l'attribut immobilier résout le problème des «minocurs», mais la cause en ajoutant une autre en ajoutant «islamulable»; Quel Simon souligne à la fin de la question initiale.



8
votes

Je note la ligne suivante:

Pour les types complexes de schéma XML contraignants avec des classes non spécifiques à XML, le .NET Framework ne fournit pas de langage de programmation direct équivalent à l'attribut Minoccurs ou Maxim.

à partir d'ici: http://msdn.microsoft.com/ EN-US / Bibliothèque / ZD0B35C (v = vs.85) .aspx


1 commentaires

... Quel genre de suce :(