DataContractSerializer.MaxItemsInObjectGraph 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取对象图中要序列化或反序列化的最大项数。
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。 请注意,当序列化或反序列化数组时,每个数组项都计为一个单独的对象。 还应注意,一些对象可能具有较大内存表示形式,因此,仅靠此配额可能不足以防范拒绝服务攻击。 有关详细信息,请参阅数据的安全注意事项。 如果需要增加此配额以至超出默认值,则一定要在发送(序列化)和接收(反序列化)方同时增加此配额。 这同时适用于数据读取和写入。