2012-02-13 4 views
0

Я вызвал службу WCF и попытался получить данные из базы данных в Windows 7. Я получил эту ошибку.Извлечение данных из базы данных с помощью WCF

Ошибка в десериализации тела ответного сообщения для операции 'GetProductXml'. Максимальная длина длины строки содержимого (8192) превысила при чтении данных XML. Эта квота может быть увеличена на , изменяя свойство MaxStringContentLength объекта XmlDictionaryReaderQuotas, используемого при создании XML-считывателя. линия 13, позиция 197.

Я попытался изменить MaxStringContentLength свойство 2147483647 в веб конфиг WCF службы, но я получаю такую ​​же ошибку выше ....

ответ

2

Вы должны изменить его в клиенте .config, который был создан при добавлении ссылки на службу в приложении Windows 7.

0

Вы можете обойти эту ошибку, добавив следующие настройки в web.config службы WCF, а также на клиентской стороне web.config:

<basichttpBinding> 
    <binding> 
     <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNameTableCharCount="2147483647" /> 
    </binding> 
</basichttpBinding> 

Примечание: Предположим, что вы используете BasicHttpBinding. Если вы используете другое связывание, обязательно добавьте readerQuotas для этой привязки.

Если вы хостинг вашей службы WCF с помощью кода, а затем вы хотите добавить квоты читателя через код смотрите ниже:

var binding = new BasicHttpBinding(); 
var myReaderQuotas = new XmlDictionaryReaderQuotas(); 
myReaderQuotas.MaxStringContentLength = 5242880; 
binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, myReaderQuotas, null);