【问题标题】:The maximum string content length quota (8192) has been exceeded while reading XML data读取 XML 数据时已超出最大字符串内容长度配额 (8192)
【发布时间】:2024-05-15 21:15:02
【问题描述】:

我可以轻松检索大量数据,但将其发送回服务会显示此错误。

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:response 时出错。 InnerException 消息是“反序列化 System.String 类型的对象时出错。读取 XML 数据时已超出最大字符串内容长度配额 (8192)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性来增加此配额。

这是我在 WCF 服务(服务器)上的内容:

 <bindings>
  <basicHttpBinding>
    <binding name="BasicHTTPEndpoint" maxBufferSize="2147483647" maxBufferPoolSize="524288" 
             maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
             useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
      maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />          
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://192.168.1.99/Service/SerializerJsonService"
            binding="basicHttpBinding" bindingConfiguration="HandleLargeMessage"
            contract="XMLService.IXMLReader" name="BasicHTTPEndpoint" />
</client>

以及 servicereferences.clientconfig:

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_ISerializerJsonService" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://192.168.1.99/Service/SerializerJsonService.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISerializerJsonService"
            contract="YelpService.ISerializerJsonService" name="BasicHttpBinding_ISerializerJsonService" />
    </client>
</system.serviceModel>

【问题讨论】:

    标签: wcf silverlight windows-phone-7 c#-4.0 windows-phone-7.1


    【解决方案1】:

    在服务器配置中:

      <basicHttpBinding>
        <binding name="BasicHTTPEndpoint"...
    

    应该是

    <basicHttpBinding>
        <binding name="HandleLargeMessage"...
    

    这样端点将使用该绑定(您在BindingConfiguration="HandleLargeMessage" 中指定,name 属性仅在此处命名端点)

    【讨论】:

      【解决方案2】:

      我认为问题出在maxBytesPerRead="4096"

      【讨论】:

        最近更新 更多