Ich habe ein Schema als eine vereinbarte Schnittstelle zwischen unserer Firma und einer externen Firma erstellt. Ich erstelle jetzt einen WCF C# -Webdienst, um die Schnittstelle zu behandeln.xsd.exe - Schema zur Klasse - zur Verwendung mit WCF
Ich habe das XSD-Dienstprogramm ausgeführt und es erstellt eine C# -Klasse. Das Schema wurde in BizTalk erstellt und verweist auf andere Schemas, sodass insgesamt mehr als 15 Klassen generiert werden.
Ich legte [DataContract] Attribut vor jeder der Klassen. Muss ich das Attribut [DataMember] auf jede einzelne Eigenschaft setzen?
Wenn ich ein Test-Client-Programm erzeuge, hat der Proxy keinen Code für eine dieser 15 Klassen.
Wir verwendeten diese Technik bei der Verwendung von .asmx-Diensten, aber nicht sicher, ob es mit WCF funktioniert. Wenn wir das Schema ändern, möchten wir die WCF-Klasse neu generieren, und dann müssten wir sie jedes Mal mit allen [DataMember] -Attributen neu gestalten. Gibt es ein neueres Tool wie XSD.exe, das besser mit WCF funktioniert?
Danke,
Neal Walters
SOLUTION (begraben in einer von Saunders Antwort/Kommentare):
Fügen Sie die XmlSerializerFormat an die Schnittstellendefinition:
[OperationContract]
[XmlSerializerFormat] // ADD THIS LINE
Transaction SubmitTransaction(Transaction transactionIn);
Zwei Hinweise: 1) Nachdem ich dies getan habe, sah ich viel mehr .xsds in meinem Proxy (Se Rice Referenz) Test Client-Programm, aber ich habe nicht die neuen Klassen in meinem Intellisense gesehen. 2) Aus irgendeinem Grund, bis ich ein Build auf dem Projekt gemacht habe, habe ich nicht alle Klassen in der Intellisense (nicht sicher, warum).
1) Wenn ich ein Test-Client-Programm erzeugen, die Proxy keinen Code hat für jede dieser 15 Klassen. Mein Verständnis ist, dass WCF erfordert, dass [DataContract] und [DataMember] ordnungsgemäß verfügbar gemacht werden. Alle Elemente sind in Ordnung für mich. 2) Ich stimme völlig überein, den Code nicht ändern zu wollen, deshalb habe ich die Frage gestellt. 3) Was soll ich suchen, um mehr über XmlSerializer zu erfahren? Generiert es C# -Code aus .xsd-Dateien? Ich habe es vielleicht beim letzten Client benutzt, muss aber auf meine Gmail zugreifen (hier blockiert). – NealWalters
Verwenden Sie [XmlSerializerFormat] für jeden Web-Service-Vorgang, für den XML-Serialisierung erforderlich ist. Das XSD-Dienstprogramm hat bereits alle anderen Arbeiten für Sie erledigt. –
@Downvoter: Grund für den Downvote? –