Ich habe eine XSD:
%Vor%Was ich mit XSD.exe v2.0.50727.3615 in eine C # -Klasse umgewandelt habe, die Code wie folgt erzeugt
%Vor%Ich gebe ein A.A-Objekt in meinem Webservice zurück, das dieses Snippet in der Servicebeschreibung erstellt.
%Vor%Die Änderung von minOccrus="1" in der XSD zu minOccurs="0" in der automatisch generierten WSDL verursacht Kummer an die Maschine am anderen Ende des Systems.
Ich könnte natürlich eine handbearbeitete WSDL für sie bereitstellen, aber ich möchte, dass die automatisch generierte WSDL ihren Bedürfnissen entspricht.
Irgendwelche Vorschläge, wie man dotnet davon überzeugen kann, minOccurs="1" für einen String-Typ in seinen automatisch generierten WSDLs auszugeben, ohne nillable="true" hinzuzufügen?
Nach MSDN MinOccurs Attribut Binding Support , dort Es gibt nur 2 Möglichkeiten, MinOccurs = 1 zu erhalten.
Werttyp ohne Standardwert oder begleitendes boolesches Feld.
Ergebnis: Der minOccurs-Wert des Ausgabeelements wird auf 1
festgelegt
Referenztyp mit der IsNullable-Eigenschaft eines XmlElement-Attributs, die auf "true" gesetzt ist.
Ergebnis: Der minOccurs-Wert des Ausgabeelements ist auf 1 festgelegt. Im Element ist das Nillable-Attribut ebenfalls auf "True" gesetzt.
Eine Eigenschaft vom Typ string hat (leider) immer einen Standardwert von
%Vor%es kann also niemals einen null Standardwert haben. Dies bedeutet, dass wir die erste Lösung niemals erfüllen können. Die einzige Möglichkeit, ein MinOccurs = 1 für Strings zu generieren, besteht darin, das Element nullwertig zu machen:
Die einzige wirkliche Lösung ist, die XSD manuell zu bearbeiten ... boo xsd.exe.
Selbst wenn es möglich wäre, knüpfte Nick DeVore an John Sooers Antwort in einem anderen Thread, der besagt, dass das Feld nicht für eingehende XMLs verwendet wird. Es ist also immer noch möglich, dass der Benutzer ungültiges XML sendet.
Nach den Antworten auf diese SO Frage, ist es nicht möglich. John Saunders sagt:
Es stellt sich heraus, dass die WSDL nicht verwendet wird um eingehende XML zu validieren. Es würde nicht Egal, ob Sie es könnten oder nicht gib minOccurs an - das wäre es nicht verwendet, um die Eingabe zu validieren.
Tags und Links .net xsd asmx web-services wsdl