DataContractSerializer.MaxItemsInObjectGraph プロパティ


シリアル化または逆シリアル化するオブジェクト グラフ内の項目の最大数を取得します。Gets the maximum number of items in an object graph to serialize or deserialize.

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


シリアル化、または逆シリアル化する項目の最大数。The maximum number of items to serialize or deserialize. 既定値は、MaxValue です。The default is MaxValue.


項目数が最大値を超えています。The number of items exceeds the maximum value.


このプロパティは構成内で設定できるほか、コードで強制的に設定することもできます。This property can be set in configuration or imperatively in code. 構成内で設定するには、カスタム動作を動作セクションに追加し、次の設定を追加します。To set it in configuration, add a custom behavior to the behaviors section and add the following setting.

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

このプロパティをコード内で強制的に設定するには、サービスの操作の説明を見つけてから操作の動作を取得し、次に示すように次のコード内にプロパティを設定します。To set this property imperatively in code find the operation description of the service, then get the operation behavior, finally set the property as shown in the following code.

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

MaxItemsInObjectGraph プロパティは、シリアライザーが ReadObject メソッドの 1 回の呼び出しでシリアル化または逆シリアル化するオブジェクトの最大数を指定しますThe MaxItemsInObjectGraph property specifies the maximum number of objects that the serializer serializes or deserializes in a single ReadObject method call. (このメソッドは常に、1 つのルート オブジェクトを読み取りますが、このオブジェクトはそのデータ メンバー内に他のオブジェクトを保持する場合があります。(The method always reads one root object, but this object may have other objects in its data members. これらのオブジェクトは他のオブジェクトを持つことができます。既定値は MaxValueです。Those objects may have other objects, and so on.) The default is MaxValue. 配列のシリアル化または逆シリアル化を行う場合、すべての配列エントリが個別のオブジェクトとしてカウントされることに注意してください。Note that when serializing or deserializing arrays, every array entry counts as a separate object. また、一部のオブジェクトが大きなメモリ表現を取る場合があります。したがって、クォータだけでは、サービス拒否攻撃の防止には不十分である可能性があることに注意してください。Also, note that some objects may have a large memory representation and so this quota alone may not be sufficient to prevent Denial of Service attacks. 詳細については、「データのセキュリティに関する考慮事項」を参照してください。For more information, see Security Considerations for Data. このクォータに既定値を上回る値を設定する必要がある場合は、送信側 (シリアル化) と受信側 (逆シリアル化) の両方でそれを行うことが重要です。If you need to increase this quota beyond its default value, it is important to do so both on the sending (serializing) and receiving (deserializing) sides. 設定は、データの読み取りと書き込みの両方に適用されます。It applies both when reading and writing data.