WCF - увеличение ReaderQuoatas на REST-сервисе
У меня есть служба WCF REST, которая принимает строку JSON
Одним из параметров является большая строка чисел
Это вызывает следующую ошибку - которая видна при трассировке и использовании SVC Trace Viewer
Произошла ошибка десериализации объекта типа CarConfiguration. Максимальная квота длины строки содержимого (8192) была превышена при чтении данных XML. Эту квоту можно увеличить, изменив свойство MaxStringContentLength в объекте XmlDictionaryReaderQuotas, используемом при создании средства чтения XML.
Теперь я прочитал всевозможные статьи, советующие, как исправить это
Все они рекомендуют увеличить различные настройки конфигурации на сервере и клиенте
например, Ошибка сериализации строки в вызове WebService
http://bloggingabout.net/blogs/ramon/archive/2008/08/20/wcf-and-large-messages.aspx
http://social.msdn.microsoft.com/Forums/en/wcf/thread/f570823a-8581-45ba-8b0b-ab0c7d7fcae1
Так что мой конфигурационный файл выглядит так
<webHttpBinding>
<binding name="webBinding" maxBufferSize="5242880" maxReceivedMessageSize="5242880" >
<readerQuotas maxDepth="5242880" maxStringContentLength="5242880" maxArrayLength="5242880" maxBytesPerRead="5242880" maxNameTableCharCount="5242880"/>
</binding>
</webHttpBinding>
...
...
...
<endpoint
address="/"
binding="webHttpBinding"
bindingConfiguration="webBinding"
Моя проблема в том, что я могу изменить это на сервере, но на клиенте нет настроек конфигурации WCF, так как это служба REST, и я просто делаю http-запрос, используя WebClient
объект
есть идеи?
2 ответа
Получается, что вам нужен полный URL-адрес на адресе конечной точки, а не относительный
Ошибка вызова службы REST WCF с использованием JSON. длина квоты (8192) превышена
Эта ошибка не будет возникать на клиенте, так как квоты считывателя предназначены только для WCF, а WebClient/HttpWebRequest не выполняет десериализацию самостоятельно и не применяет другие виды квот.
Так что я бы сказал, что, скорее всего, вы помещаете конфигурацию в неправильное место, и она не поднимается.
Либо так, либо... вы не используете один из сериализаторов WCF DataContract вручную на стороне клиента, не так ли?