DataContractSerializer.MaxItemsInObjectGraph 属性

定义

获取对象图中要序列化或反序列化的最大项数。

public int MaxItemsInObjectGraph { get; }

属性值

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

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0