На что конкретно ссылается readerQuotas -> maxStringContentLength?

Я прочитал на msdn, что атрибут maxStringContentLength для readerQuotas для клиента WCF означает:

Целое положительное число, указывающее максимально допустимое количество символов в содержимом элемента XML. По умолчанию это 8192.

Я, наверное, здесь немного толков, но на что именно они ссылаются, когда говорят о содержании элементов XML? Это содержание в одном элементе XML? И будет ли он включать вложенные дочерние элементы? Или это предел каждого элемента только без вложенных элементов?

Например, в следующей структуре:

<a>
 <b>baap</b>
 <c>beep</c>
</a>

Будет ли причина вызывать переполнение maxStringContentLength, если baap и beep вместе превышают лимит? Или только b или c вызовут единицу, если их соответствующее содержание превысило предел? Или я что-то упустил?

Спасибо всем!

1 ответ

Решение

Из MSDN:

MaxStringContentLength Эта квота ограничивает максимальный размер строки, который возвращает читатель XML. Эта квота не ограничивает потребление памяти в самой программе чтения XML, а в компоненте, использующем программу чтения. Например, когда DataContractSerializer использует устройство чтения, защищенное с помощью MaxStringContentLength, он не десериализует строки, размер которых превышает эту квоту. При непосредственном использовании класса XmlDictionaryReader эту квоту уважают не все методы, а только методы, специально предназначенные для чтения строк, например метод ReadContentAsString. Эта квота не влияет на свойство Value в считывателе и поэтому не должна использоваться, когда необходима защита, предоставляемая этой квотой.

Он ограничивает максимальный размер возвращаемой строки, будь то строка XML или метод, возвращающий строку.

Другие вопросы по тегам