次の方法で共有


DataContractSerializer.MaxItemsInObjectGraph プロパティ

定義

シリアル化または逆シリアル化するオブジェクト グラフ内の項目の最大数を取得します。

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

プロパティ値

シリアル化、または逆シリアル化する項目の最大数。 既定値は Int32.MaxValue です

例外

項目数が最大値を超えています。

注釈

このプロパティは構成内で設定できるほか、コードで強制的に設定することもできます。 構成内で設定するには、カスタム動作を動作セクションに追加し、次の設定を追加します。

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

このプロパティをコード内で強制的に設定するには、サービスの操作の説明を見つけてから操作の動作を取得し、次に示すように次のコード内にプロパティを設定します。

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

MaxItemsInObjectGraph プロパティは、シリアライザーが ReadObject メソッドの 1 回の呼び出しでシリアル化または逆シリアル化するオブジェクトの最大数を指定します (メソッドは常に 1 つのルート オブジェクトを読み取りますが、このオブジェクトのデータ メンバーに他のオブジェクトが含まれている可能性があります。これらのオブジェクトには他のオブジェクトが含まれる場合があります。)既定値は です MaxValue。 配列のシリアル化または逆シリアル化を行う場合、すべての配列エントリが個別のオブジェクトとしてカウントされることに注意してください。 また、一部のオブジェクトが大きなメモリ表現を取る場合があります。したがって、クォータだけでは、サービス拒否攻撃の防止には不十分である可能性があることに注意してください。 詳細については、「セキュリティに関するデータの考慮事項」をご覧ください。 このクォータに既定値を上回る値を設定する必要がある場合は、送信側 (シリアル化) と受信側 (逆シリアル化) の両方でそれを行うことが重要です。 設定は、データの読み取りと書き込みの両方に適用されます。

適用対象