Condividi tramite


DataContractSerializer.MaxItemsInObjectGraph Proprietà

Definizione

Ottiene il numero massimo di elementi in un oggetto grafico da serializzare o deserializzare.

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

Valore della proprietà

Numero massimo di elementi da serializzare o deserializzare. Il valore predefinito è Int32.MaxValue.

Eccezioni

Il numero di elementi supera il valore massimo.

Commenti

Questa proprietà può essere impostata nella configurazione o in modo imperativo nel codice. Per impostarlo nella configurazione, aggiungere un comportamento personalizzato alla sezione comportamenti e aggiungere l'impostazione seguente.

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

Per impostare questa proprietà in modo imperativo nel codice, trovare la descrizione dell'operazione del servizio, ottenere il comportamento dell'operazione e infine impostare la proprietà come illustrato nel codice seguente.

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

La MaxItemsInObjectGraph proprietà specifica il numero massimo di oggetti serializzati o deserializzati dal serializzatore in una singola ReadObject chiamata al metodo. Il metodo legge sempre un oggetto radice, ma questo oggetto può avere altri oggetti nei relativi membri dati. Tali oggetti possono avere altri oggetti e così via. Il valore predefinito è MaxValue. Si noti che durante la serializzazione o la deserializzazione di matrici, ogni voce di matrice viene conteggiato come oggetto separato. Si noti inoltre che alcuni oggetti possono avere una rappresentazione di memoria di grandi dimensioni e pertanto questa quota da sola potrebbe non essere sufficiente per evitare attacchi Denial of Service. Per altre informazioni, vedere Considerazioni sulla sicurezza per i dati. Se è necessario aumentare questa quota oltre il valore predefinito, è importante farlo sia sul lato invio (serializzazione) che sulla ricezione (deserializzazione). Si applica sia durante la lettura che la scrittura dei dati.

Si applica a