Ich habe ein Problem beim Versuch, ein Objekt zurückgeben, die eine Auflistung von Childobjects, die wiederum eine Sammlung von Enkel-Objekten enthalten können zurückgegeben. Ich erhalte eine Fehlermeldung, die Verbindung wurde zwangsweise vom Host geschlossen.Komplexe Datentypen in WCF?
Gibt es eine Möglichkeit, dies zu funktionieren? Im Moment habe ich eine Struktur dieses ähnelt:
Pseudocode:
Person:
IEnumerable<Order>
Order:
IEnumerable<OrderLine>
Alle drei Objekte haben die Datacontract Attribut und alle öffentlichen Eigenschaften i (einschließlich des IEnumerable der) ausgesetzt wollen, müssen Sie die Datamember-Attribut.
Ich habe mehrere OperationContract auf meinem Dienst und alle Methoden, die ein einzelnes Objekt ODER ein IEnumerable eines Objekts zurückgeben, funktionieren perfekt. Nur wenn ich versuche IEnumerable zu verschachteln, wird es schlecht. Auch in meiner Client-Service-Referenz habe ich die generische Liste als meinen Sammlertyp ausgewählt. Ich möchte nur betonen, nur eine meiner Operationen/Methoden scheitern mit diesem Fehler - der Rest von ihnen funktioniert einwandfrei.
EDIT (ausführlichere Fehlerbeschreibung):
[SocketException (0x2746): An existing connection was forcibly closed by
the remote host]
[IOException: Unable to read data from the transport connection:
An existing connection was forcibly closed by the remote host.]
[WebException: The underlying connection was closed: An unexpected
error occurred on a receive.]
[CommunicationException: An error occurred while receiving the HTTP
response to http://myservice.mydomain.dk/MyService.svc. This could
be due to the service endpoint binding not using the HTTP protocol.
This could also be due to an HTTP request context being aborted by
the server (possibly due to the service shutting down). See server
logs for more details.]
habe ich versucht, für Protokolle aus, aber ich kann keine finden ... auch eine WSHttpBinding und einen HTTP-Endpunkt ich verwende.
Gibt es etwas in Ihren Objekten, das nicht korrekt serialisiert? –
Ich weiß es nicht. Ich dachte, ein verschachteltes IEnumberable könnte möglicherweise nicht serialisiert werden? Aber wie finde ich heraus? Ich kann den ganzen Weg bis zur Rückkehr des tatsächlichen OperationContract debuggen und alles ist in Ordnung, aber der Transport scheint falsch zu gehen. Ich habe kein Serialize-Attribut, aber stattdessen [DataMember] –
Ich bin mit dem gleichen Fehler konfrontiert wie Sie .. meine Klassen sind auch mit Enum-Eigenschaften definiert, aber ich sehe das nicht als ein Problem überall .. enums sollte in Ordnung sein .. und was meinst du mit dem Standardwert? Sie sind Werttypen, so dass sie immer einen Standardwert haben.Ich werde versuchen Enum-Eigenschaften zu entfernen und sehen, ob das es behebt .. hier ist ein paar Informationen über unterstützte Daten-Vertragsklassen http://msdn.microsoft.com/en-us/library/ms731923.aspx –