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 вручную на стороне клиента, не так ли?

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