Übergeben von benutzerdefinierten Objekten zu einem web-service
Habe ich ein übergeben zu müssen, ein benutzerdefiniertes Objekt, um eine remote-web-service. Ich habe gelesen, dass es notwendig sein kann, um ISerializable implementieren, aber das habe ich bereits getan und ich bin mit Schwierigkeiten. Was ist der richtige Weg, in C# zu übergeben eines benutzerdefinierten Objekts, um eine web-service-Methode?
Es könnte besser sein, wenn Sie könnte über die spezifischen Schwierigkeiten, die Ihr begegnen. Was wollen Sie tun, wirklich? Vielleicht ein paar konkrete Beispiele würden helfen. Was meinst du mit "pass ein benutzerdefiniertes Objekt"? das könnte bedeuten, viele Dinge. Einige Besonderheiten helfen.
InformationsquelleAutor Ben Lakey | 2009-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Objekte, die Sie als Argumente bereitstellen, die als Teil des service-Anfrage markiert werden muss, mit [Serializable] und stützt sich auf einige der Antworten vor mir, Sie müssen auch sicherstellen, dass Ihre benutzerdefinierten Objekt enthält keine Parameter im Konstruktor.
Halten Sie auch im Verstand, keine Logik, Sie haben innerhalb Ihrer Klasse nicht erstellt werden in der proxy-Klasse, die angelegt wird, auf der client-Seite. Alles, was Sie sehen auf der client-Seite ist ein Standard-Konstruktor und Eigenschaften. Also, wenn Sie Methoden hinzufügen, um Ihre benutzerdefinierten Objekte beachten Sie, dass der client nicht sehen, oder Sie werden in der Lage, Sie zu nutzen.
Gleiche gilt für alle Logik, die Sie vielleicht in den Eigenschaften.
Beispiel
Warum nicht? Nicht die XmlSerializer-verlassen sich ebenfalls auf das [Serializable] - Attribut?
Hinzugefügt Beispiel. Ich verwende das Attribut [Serializable] die ganze Zeit, wenn Sie benötigen, um ein benutzerdefiniertes Objekt, das serialisiert werden.
Nein, tut es nicht. Siehe msdn.microsoft.com/en-us/library/182eeyhh(VS.85).aspx.
Versuchen Sie es entfernen [Serializable] und sehen, ob es noch funktioniert.
InformationsquelleAutor Jim Scott
Sieht aus wie ein Duplikat zu diesem Frage
Sowieso, alle beteiligten Objekte im WS-Interaktionen sollten XML-serialisierbar, nicht ISerializable (die binäre Serialisierung). Außerdem sollen Sie beschrieben werden in den service-contract (WSDL), da sonst die clients nicht in der Lage sein, Sie zu fressen. Dieser Artikel sollte nützlich sein, zu verstehen, XML-Serialisierung mit XML-Web-Services.
Jedoch, wenn man darüber spricht, wirklich Brauch Objekte (d.h. jede Art). Sie sollten erwägen, die Weitergabe in binärer form: entweder als base64-codiert ist, oder als Anhänge. Die Frage, die ich verlinkte, hat eine Antwort, wie das zu tun.
InformationsquelleAutor DreamSonic
Blick auf diese Frage, um zu sehen, wie die Umsetzung der XML-Serialisierung für benutzerdefinierte Objekte
InformationsquelleAutor Michael Kniskern
Edit: entfernt den Teil über das [Serializable]
Erstellen Sie den Dienst, oder Konsum?
Um ein Objekt zu erstellen, die weitergegeben werden können, als parameter des webmethod, die Sie nicht haben, etwas besonderes zu tun. Das ist, wenn Sie an einem asmx-webservice.
OTOH, Wenn Sie beim erstellen eines WCF-service, dann Sie haben, um die Klasse mit [DataContract] und alle Mitglieder möchten Sie serialisiert werden mit [DataMember].
Wenn Sie verbraucht sind der webservice, dann die proxy-Klassen für das Objekt zu übergeben, erzeugt werden sollen, wenn Sie die zusätzlichen service-Referenz. Sie müssen nur, Sie zu benutzen.
können Sie dann den jeweiligen code und genaue Beschwerden 😉
InformationsquelleAutor fretje