WCF - увеличение ReaderQuoatas на REST-сервисе - PullRequest
1 голос
/ 01 июня 2010

У меня есть служба 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 ]

1 голос
/ 02 июня 2010

получается, что вам нужен полный URL-адрес адреса конечной точки, а не относительный

Ошибка вызова службы REST WCF с использованием JSON. длина квоты (8192) превышена

0 голосов
/ 01 июня 2010

Эта ошибка не будет возникать на клиенте, поскольку квоты считывателя предназначены только для WCF, а WebClient / HttpWebRequest не выполняет десериализацию самостоятельно и не применяет другие виды квот.

Так что я бы сказал, что, скорее всего, вы помещаете конфигурацию не в то место, и она не поднимается.

Либо так, либо ... вы не используете один из сериализаторов WCF DataContract вручную на стороне клиента, не так ли?

...