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 方法调用中序列化或反序列化的对象的最大数目。 (方法始终读取一个根对象,但此对象的数据成员中可能有其他对象。这些对象可能具有其他对象,等等。) 默认值为 MaxValue。 请注意,当序列化或反序列化数组时,每个数组项都计为一个单独的对象。 还应注意,一些对象可能具有较大内存表示形式,因此,仅靠此配额可能不足以防范拒绝服务攻击。 有关详细信息,请参阅数据的安全注意事项。 如果需要增加此配额以至超出默认值,则一定要在发送(序列化)和接收(反序列化)方同时增加此配额。 这同时适用于数据读取和写入。

适用于