Ich habe einen WCF-Dienst erstellt, der IEnumerable<CyberResourceProvisioningAction>
zurückgibt.
Der CyberResourceProvisioningAction-Typ hat eine Eigenschaft von AccountInformation IEnumerable<CyberResourceProvisioningActionAccountInfo>
. Wenn ich die AccountInformation-Eigenschaft mit DataMemberAttribute dekoriere, erhalte ich die Ausnahme:
WCF System.Net.WebException: Die Grundlegende Verbindung wurde geschlossen: Die Verbindung wurde unerwartet geschlossen
Offensichtlich eine sehr generische Ausnahme, aber mein Google-fu zeigt an, dass das Problem am häufigsten auftritt, wenn eine große Anzahl von Objekten in einer Sammlung zurückgegeben wird. Die vorgeschlagene Lösung besteht darin, <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
festzulegen. Leider hat dies mein Problem nicht behoben. (Ich glaube nicht, dass ich eine kleine Menge an Daten zurückgeben würde).
Die Eigenschaften werden korrekt eingestellt, daher bin ich ziemlich sicher, dass mein Problem mit meiner Serialisierungskonfiguration zu tun hat. Ist etwas falsch mit meinen Klassen, was den WCF-Dienst auf diese Weise zu einem Fehler führt?
%Vor%CyberResourceProvisioningActionAccountInfo
%Vor%Wenn zusätzliche Konfigurationsinformationen benötigt werden, lassen Sie es mich wissen und ich werde den Beitrag bearbeiten.
Wegen des Kommentars von "DataContract Programmiermodell Verletzung" links von alexdej habe ich angefangen, ein bisschen näher zu schauen, was war in meinen Eigenschaften. Ich hatte einen Linq-Typ in der Eigenschaft und obwohl es ein IEnumerable war, wurde es nicht für die Serialisierung aufgezählt. Hinzugefügt ein .ToList()
und alles ist gut.
Tags und Links wcf c# c#-4.0 ienumerable datamember