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. Обратите внимание, что при сериализации или десериализации массивов каждая запись массива считается отдельным объектом. Также обратите внимание, что некоторые объекты могут иметь большое представление в памяти, поэтому одной этой квоты может быть недостаточно для предотвращения атак типа "отказ в обслуживании". Дополнительные сведения см. в разделе Вопросы безопасности для данных. При необходимости сделать квоту выше, чем задано по умолчанию, следует увеличить ее и на стороне отправки (сериализации), и на стороне получения (десериализации). Квота действует как при чтении, так и при записи данных.