На что конкретно ссылается readerQuotas -> maxStringContentLength?
Я прочитал на msdn, что атрибут maxStringContentLength для readerQuotas для клиента WCF означает:
Целое положительное число, указывающее максимально допустимое количество символов в содержимом элемента XML. По умолчанию это 8192.
Я, наверное, здесь немного толков, но на что именно они ссылаются, когда говорят о содержании элементов XML? Это содержание в одном элементе XML? И будет ли он включать вложенные дочерние элементы? Или это предел каждого элемента только без вложенных элементов?
Например, в следующей структуре:
<a>
<b>baap</b>
<c>beep</c>
</a>
Будет ли причина вызывать переполнение maxStringContentLength, если baap и beep вместе превышают лимит? Или только b или c вызовут единицу, если их соответствующее содержание превысило предел? Или я что-то упустил?
Спасибо всем!
1 ответ
MaxStringContentLength Эта квота ограничивает максимальный размер строки, который возвращает читатель XML. Эта квота не ограничивает потребление памяти в самой программе чтения XML, а в компоненте, использующем программу чтения. Например, когда DataContractSerializer использует устройство чтения, защищенное с помощью MaxStringContentLength, он не десериализует строки, размер которых превышает эту квоту. При непосредственном использовании класса XmlDictionaryReader эту квоту уважают не все методы, а только методы, специально предназначенные для чтения строк, например метод ReadContentAsString. Эта квота не влияет на свойство Value в считывателе и поэтому не должна использоваться, когда необходима защита, предоставляемая этой квотой.
Он ограничивает максимальный размер возвращаемой строки, будь то строка XML или метод, возвращающий строку.