WCF - 增加REST服务的ReaderQuotas

时间:2010-06-01 16:33:15

标签: wcf json rest readerquotas

我有一个WCF REST服务,它接受一个JSON字符串

其中一个参数是一大串数字

这会导致以下错误 - 通过跟踪和使用SVC跟踪查看器

可以看到

反序列化CarConfiguration类型的对象时出错。读取XML数据时已超出最大字符串内容长度配额(8192)。通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性,可以增加此配额。

现在我已经阅读了各种建议如何纠正这个问题的文章

他们都建议在服务器和客户端上增加各种配置设置

e.g。 Error Serializing String in WebService call

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服务,我只是使用WebClient对象发出http请求

任何想法?

2 个答案:

答案 0 :(得分:1)

因此事实证明,您需要在端点地址上使用完全限定的URL,而不是相对的URL

Error calling a WCF REST service using JSON. length quota (8192) exceeded

答案 1 :(得分:0)

该错误不会发生在客户端上,因为读者配额只是WCF,而WebClient / HttpWebRequest本身不进行反序列化或强制执行任何其他类型的配额。

所以我要说,你可能会把配置放在错误的位置并且没有被拿起来。

或者......你没有在客户端手动使用其中一个WCF DataContract Serializers,是吗?