DataContractSerializer.MaxItemsInObjectGraph Właściwość

Definicja

Pobiera maksymalną liczbę elementów na grafie obiektu w celu serializacji lub deserializacji.

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

Wartość właściwości

Maksymalna liczba elementów do serializacji lub deserializacji. Wartość domyślna to Int32.MaxValue.

Wyjątki

Liczba elementów przekracza maksymalną wartość.

Uwagi

Tę właściwość można ustawić w konfiguracji lub imperatywnie w kodzie. Aby ustawić je w konfiguracji, dodaj zachowanie niestandardowe do sekcji zachowania i dodaj następujące ustawienie.

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

Aby ustawić tę właściwość w kodzie, znajdź opis operacji usługi, a następnie pobierz zachowanie operacji, na koniec ustaw właściwość, jak pokazano w poniższym kodzie.

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

Właściwość MaxItemsInObjectGraph określa maksymalną liczbę obiektów, które serializator serializuje lub deserializuje w jednym ReadObject wywołaniu metody. (Metoda zawsze odczytuje jeden obiekt główny, ale ten obiekt może mieć inne obiekty w jego składowych danych. Te obiekty mogą mieć inne obiekty itd.) Wartość domyślna to MaxValue. Należy pamiętać, że podczas serializacji lub deserializacji tablic każdy wpis tablicy liczy się jako oddzielny obiekt. Należy również zauważyć, że niektóre obiekty mogą mieć dużą reprezentację pamięci i dlatego ten limit przydziału może nie być wystarczający, aby zapobiec atakom typu "odmowa usługi". Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące zabezpieczeń danych. Jeśli musisz zwiększyć ten limit przydziału poza jego wartość domyślną, należy to zrobić zarówno po stronach wysyłania (serializowania) i odbierania (deserializacji). Ma zastosowanie zarówno podczas odczytywania, jak i zapisywania danych.

Dotyczy