Freigeben über


DataContractSerializer.MaxItemsInObjectGraph Eigenschaft

Definition

Ruft die maximale Anzahl von Elementen in einem Objektdiagramm ab, die serialisiert oder deserialisiert werden.

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 ist größer als der Maximalwert.

Hinweise

Diese Eigenschaft kann in der Konfiguration bzw. imperativ im Code festgelegt werden. Wenn sie in der Konfiguration festgelegt werden soll, fügen Sie dem Abschnitt mit Verhaltensweisen ein benutzerdefiniertes Verhalten hinzu, und fügen Sie folgende Einstellung hinzu:

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

Wenn Sie diese Eigenschaft imperativ im Code festlegen möchten, machen Sie die Vorgangsbeschreibung des Diensts ausfindig, rufen Sie dann das Vorgangsverhalten ab, und legen Sie dann die Eigenschaft wie im folgenden Code dargestellt fest.

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 das Serialisierungsprogramm in einem einzelnen ReadObject-Methodenaufruf serialisieren bzw. deserialisieren kann. (Die -Methode liest immer ein Stammobjekt, aber dieses Objekt kann andere Objekte in den Datenmembern enthalten. Diese Objekte können andere Objekte haben usw.) Der Standardwert ist MaxValue. Beachten Sie, dass beim Serialisieren und Deserialisieren von Arrays jeder Arrayeintrag als separates Objekt betrachtet wird. Beachten Sie zudem, dass einige Objekte über eine große Speicherdarstellung verfügen, und dass dieses Kontingent allein deswegen möglicherweise nicht ausreicht, um einen Denial-of-Service-Angriff zu verhindern. Weitere Informationen finden Sie unter Sicherheitsüberlegungen zu Daten. Wenn Sie das Kontingent über die Standardeinstellung hinaus erhöhen möchten, müssen Sie dies sowohl auf der sendenden (serialisierenden) als auch der empfangenden (deserialisierenden) Seite tun. Das Kontingent wird sowohl beim Lesen als auch beim Schreiben von Daten angewendet.

Gilt für: