【问题标题】:WCF - Increase ReaderQuoatas on REST serviceWCF - 在 REST 服务上增加 ReaderQuoatas
【发布时间】:2011-02-26 10:48:53
【问题描述】:

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

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

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

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

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

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

例如 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 请求

有什么想法吗?

【问题讨论】:

    标签: wcf json rest readerquotas


    【解决方案1】:

    所以事实证明你需要一个端点地址上的完全限定的 url,而不是相对的一个

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

    【讨论】:

      【解决方案2】:

      该错误不会发生在客户端上,因为读取器配额仅适用于 WCF,并且 WebClient/HttpWebRequest 不会自行反序列化或强制执行任何其他类型的配额。

      所以我想说的是,很可能您将配置放在错误的位置并且没有被拾取。

      或者……您没有在客户端手动使用 WCF DataContract 序列化程序之一,是吗?

      【讨论】:

      • 绝对将设置放入正确的绑定中,因为在端点中故意输入错字并看到它失败。有点同意您的看法,因为它在客户端上不是必需的,但很多文章都说它必须在两者中都有。显然rest客户端上没有这样的设置
      • 然后打败我。您正在配置的端点的正确地址是什么?
      猜你喜欢
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多