Freigeben über


DataContractSerializer.MaxItemsInObjectGraph Eigenschaft

Definition

Ruft die maximale Anzahl von Elementen in einem Objektdiagramm ab, um sie zu serialisieren oder deserialisieren.

public:
 property int MaxItemsInObjectGraph { int get(); };
public int MaxItemsInObjectGraph { get; }
member this.MaxItemsInObjectGraph : int
Public ReadOnly Property MaxItemsInObjectGraph As Integer

Eigenschaftswert

Die maximale Anzahl von Elementen, die serialisiert oder deserialisiert werden sollen. Der Standardwert ist Int32.MaxValue.

Ausnahmen

Die Anzahl der Elemente überschreitet den Maximalwert.

Hinweise

Diese Eigenschaft kann in der Konfiguration oder im Imperativen im Code festgelegt werden. Um sie in der Konfiguration festzulegen, fügen Sie dem Abschnitt "Verhalten" ein benutzerdefiniertes Verhalten hinzu, und fügen Sie die folgende Einstellung hinzu.

<behaviors>
    <behavior name="MyServiceBehavior">
        <dataContractSerializer maxItemsInObjectGraph="3" />
    </behavior>
</behaviors>

Um diese Eigenschaft im Code zwingend festzulegen, suchen Sie nach der Vorgangsbeschreibung des Diensts, rufen Sie dann das Vorgangsverhalten ab, und legen Sie schließlich die Eigenschaft fest, wie im folgenden Code gezeigt.

OperationDescription operation = host.Description.Endpoints[0].Contract.Operations.Find("MyOperationName");
operation.Behaviors.Find<DataContractSerializerOperationBehavior>().MaxItemsInObjectGraph = 3;

Die MaxItemsInObjectGraph Eigenschaft gibt die maximale Anzahl von Objekten an, die der Serialisierer in einem einzelnen ReadObject Methodenaufruf serialisiert oder deserialisiert. (Die Methode liest immer ein Stammobjekt, aber dieses Objekt enthält möglicherweise andere Objekte in seinen Datenmelementen. Diese Objekte haben möglicherweise andere Objekte usw.) Der Standardwert ist MaxValue. Beachten Sie, dass beim Serialisieren oder Deserialisieren von Arrays jeder Arrayeintrag als separates Objekt zählt. Beachten Sie außerdem, dass einige Objekte möglicherweise eine große Speicherdarstellung aufweisen und dieses Kontingent allein nicht ausreicht, um Denial-of-Service-Angriffe zu verhindern. Weitere Informationen finden Sie unter Sicherheitsüberlegungen für Daten. Wenn Sie dieses Kontingent über seinen Standardwert hinaus erhöhen müssen, ist es wichtig, dies sowohl auf der Sendeseite (Serialisierung) als auch beim Empfangen (Deserialisieren) zu tun. Sie gilt sowohl beim Lesen als auch beim Schreiben von Daten.

Gilt für: