Condividi tramite


DataContractSerializer.MaxItemsInObjectGraph Proprietà

Definizione

Ottiene il numero massimo di elementi di 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 a livello di configurazione oppure in modo imperativo nel codice. Per impostarla a livello di configurazione, aggiungere un comportamento personalizzato alla sezione dei comportamenti, quindi aggiungere l'impostazione seguente.

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

Per impostare questa proprietà in modo imperativo nel codice, individuare la descrizione dell'operazione del servizio, recuperare quindi 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 proprietà MaxItemsInObjectGraph specifica il numero massimo di oggetti serializzati o deserializzati dal serializzatore in una singola chiamata al metodo ReadObject. 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, in caso di serializzazione o deserializzazione di matrici, ogni elemento della matrice viene considerato come un oggetto separato. Inoltre, poiché per alcuni oggetti è possibile una vasta rappresentazione in memoria, tale quota da sola potrebbe non essere sufficiente per impedire attacchi di tipo Denial of Service. Per altre informazioni, vedere Considerazioni sulla sicurezza per i dati. Se è necessario aumentare la quota oltre il valore predefinito, è importante aumentarla sia sul lato di invio (serializzazione) sia su quello di ricezione (deserializzazione). Questo vale per la lettura e la scrittura dei dati.

Si applica a